@ -49,6 +49,7 @@ import java.math.BigDecimal;
import java.util.ArrayList ;
import java.util.List ;
import java.util.Map ;
import java.util.Set ;
import java.util.stream.Collectors ;
/ * *
@ -85,15 +86,196 @@ public class TbsCostApplyTestController {
private TbsCostChangeInfoService tbsCostChangeInfoService ;
private TbsBudgetCostItemService budgetCostItemService ;
private TbsBudgetLogService budgetLogService ;
private SysTableTempMapper t ableTempMapper;
private SysTableTempMapper sysT ableTempMapper;
@GetMapping ( "/rebuildAll" )
//@GetMapping("/overspendRebuildAll")
public R < ? > ss ( ) {
// for (Long id : ids) {
// this.rebuildCost(id);
// }
return R . ok ( ) ;
LambdaQueryWrapper < SysTableTemp > lqw = new LambdaQueryWrapper < > ( ) ;
lqw . eq ( SysTableTemp : : getOptionTitle , "rebuildCost" ) ;
lqw . likeRight ( SysTableTemp : : getResultMsg , "预算未匹配" ) ;
lqw . eq ( SysTableTemp : : getDealState , 0 ) ;
List < SysTableTemp > sysTableTempList = sysTableTempMapper . selectList ( lqw ) ;
for ( SysTableTemp tableTemp : sysTableTempList ) {
overRebuildCost ( Long . parseLong ( tableTemp . getTableId ( ) ) ) ;
}
return R . ok ( sysTableTempList . size ( ) ) ;
}
public void saveTableTmp ( SysTableTemp sysTableTemp ) {
sysTableTempMapper . insert ( sysTableTemp ) ;
}
//@GetMapping("/overRebuildCost")
public R < ? > overRebuildCost ( Long costApplyId ) {
SysTableTemp sysTableTemp = new SysTableTemp ( ) ;
sysTableTemp . setTableName ( "tbs_cost_apply" ) ;
sysTableTemp . setTableId ( "" + costApplyId ) ;
sysTableTemp . setOptionTitle ( "overRebuildCost" ) ;
TbsCostApply costApply = tbsCostApplyService . getById ( costApplyId ) ;
TbsBudgetTableResultVo resultVo = tbsBudgetMatchApplication . getMatchResult ( costApplyId , false , true ) ;
List < TbsActivity > activityList = tbsActivityService . listByCostApplyId ( costApplyId ) ;
SysUser sysUser = sysUserService . getById ( costApply . getUserId ( ) ) ;
// 未命中预算
List < TbsCostUnItem > costUnItems = new ArrayList < > ( ) ;
// 所有记录情况
List < TbsBudgetCostItem > allBudgetItem = new ArrayList < > ( ) ;
// 命中的预算
List < TbsBudgetLog > budgetLogList = new ArrayList < > ( ) ;
Map < Long , TbsScheduleItemBudget > matchItemBudgetsMap = resultVo . getMatchItemBudgetsMap ( ) ;
for ( TbsActivityCenterGoods centerGoods : resultVo . getActivityCenterGoodsList ( ) ) {
TbsBudgetCostItem costItem = new TbsBudgetCostItem ( ) ;
costItem . setCenterGoodsCode ( centerGoods . getCenterGoodsCode ( ) ) ;
costItem . setCostApplyId ( centerGoods . getCostApplyId ( ) ) ;
costItem . setActivityId ( centerGoods . getActivityId ( ) ) ;
costItem . setActivityCode ( centerGoods . getActivityCode ( ) ) ;
costItem . setSupplierId ( centerGoods . getSupplierId ( ) ) ;
costItem . setSupplierCode ( centerGoods . getSupplierCode ( ) ) ;
costItem . setSupplierName ( centerGoods . getSupplierName ( ) ) ;
costItem . setSubjectId ( centerGoods . getSubjectId ( ) ) ;
costItem . setSubjectCode ( centerGoods . getSubjectCode ( ) ) ;
costItem . setSubjectName ( centerGoods . getSubjectName ( ) ) ;
costItem . setCenterType ( centerGoods . getCenterType ( ) ) ;
costItem . setCenterId ( centerGoods . getCenterId ( ) ) ;
costItem . setCenterCode ( centerGoods . getCenterCode ( ) ) ;
costItem . setCenterName ( centerGoods . getCenterName ( ) ) ;
costItem . setCenterAmount ( centerGoods . getCenterAmount ( ) ) ;
costItem . setCenterRate ( centerGoods . getCenterRate ( ) ) ;
costItem . setCenterGoodsAmount ( centerGoods . getCenterGoodsAmount ( ) ) ;
costItem . setCenterGoodsRate ( centerGoods . getCenterGoodsRate ( ) ) ;
costItem . setTargetType ( centerGoods . getTargetType ( ) ) ;
costItem . setTargetId ( centerGoods . getTargetId ( ) ) ;
costItem . setTargetCode ( centerGoods . getTargetCode ( ) ) ;
costItem . setTargetName ( centerGoods . getTargetName ( ) ) ;
costItem . setTargetLevelPathIds ( centerGoods . getTargetLevelPathIds ( ) ) ;
costItem . setTargetLevelPathNames ( centerGoods . getTargetLevelPathNames ( ) ) ;
costItem . setActStartDate ( centerGoods . getActStartDate ( ) ) ;
costItem . setActEndDate ( centerGoods . getActEndDate ( ) ) ;
costItem . setPreStartDate ( centerGoods . getPreStartDate ( ) ) ;
costItem . setPreEndDate ( centerGoods . getPreEndDate ( ) ) ;
costItem . setPreCheckDate ( centerGoods . getPreCheckDate ( ) ) ;
costItem . setCenterGoodItemId ( centerGoods . getId ( ) ) ;
if ( centerGoods . getScheduleItemBudgetId ( ) = = null ) {
TbsCostUnItem costUnItem = new TbsCostUnItem ( ) ;
costUnItem . setCostApplyId ( centerGoods . getCostApplyId ( ) ) ;
costUnItem . setActivityId ( centerGoods . getActivityId ( ) ) ;
costUnItem . setActivityCode ( centerGoods . getActivityCode ( ) ) ;
costUnItem . setSubjectId ( centerGoods . getSubjectId ( ) ) ;
costUnItem . setSubjectCode ( centerGoods . getSubjectCode ( ) ) ;
costUnItem . setSubjectName ( centerGoods . getSubjectName ( ) ) ;
costUnItem . setCenterType ( centerGoods . getCenterType ( ) ) ;
costUnItem . setCenterId ( centerGoods . getCenterId ( ) ) ;
costUnItem . setCenterCode ( centerGoods . getCenterCode ( ) ) ;
costUnItem . setCenterName ( centerGoods . getCenterName ( ) ) ;
costUnItem . setAmount ( centerGoods . getCenterGoodsAmount ( ) ) ;
costUnItem . setTargetType ( centerGoods . getTargetType ( ) ) ;
costUnItem . setTargetId ( centerGoods . getTargetId ( ) ) ;
costUnItem . setTargetCode ( centerGoods . getTargetCode ( ) ) ;
costUnItem . setTargetName ( centerGoods . getTargetName ( ) ) ;
costUnItem . setTargetLevelPathIds ( centerGoods . getTargetLevelPathIds ( ) ) ;
costUnItem . setTargetLevelPathNames ( centerGoods . getTargetLevelPathNames ( ) ) ;
costUnItem . setActStartDate ( centerGoods . getActStartDate ( ) ) ;
costUnItem . setActEndDate ( centerGoods . getActEndDate ( ) ) ;
costUnItem . setPreStartDate ( centerGoods . getPreStartDate ( ) ) ;
costUnItem . setPreEndDate ( centerGoods . getPreEndDate ( ) ) ;
costUnItem . setPreCheckDate ( centerGoods . getPreCheckDate ( ) ) ;
costUnItem . setSupplierId ( centerGoods . getSupplierId ( ) ) ;
costUnItem . setSupplierCode ( centerGoods . getSupplierCode ( ) ) ;
costUnItem . setSupplierName ( centerGoods . getSupplierName ( ) ) ;
costUnItems . add ( costUnItem ) ;
costItem . setBudgetId ( 0L ) ;
costItem . setScheduleId ( 0L ) ;
costItem . setScheduleItemId ( 0L ) ;
costItem . setScheduleItemAmount ( BigDecimal . ZERO ) ;
costItem . setScheduleItemAmountUsed ( BigDecimal . ZERO ) ;
costItem . setScheduleItemAmountApply ( BigDecimal . ZERO ) ;
costItem . setScheduleItemBudgetId ( 0L ) ;
} else {
TbsScheduleItemBudget itemBudget = matchItemBudgetsMap . get ( centerGoods . getScheduleItemBudgetId ( ) ) ;
TbsActivity currActivity = null ;
for ( TbsActivity activity : activityList ) {
if ( centerGoods . getActivityId ( ) . equals ( activity . getId ( ) ) ) {
currActivity = activity ;
}
}
TbsBudgetLog budgetLog = TbsBudgetLogBuildUtil . buildTbsBudgetLog ( BudgetLogOptFlag . State_1 , sysUser , costApply , itemBudget , centerGoods , centerGoods . getCenterGoodsAmount ( ) , currActivity ) ;
budgetLogList . add ( budgetLog ) ;
costItem . setBudgetId ( itemBudget . getBudgetId ( ) ) ;
costItem . setScheduleId ( itemBudget . getScheduleId ( ) ) ;
costItem . setScheduleItemId ( itemBudget . getScheduleItemId ( ) ) ;
costItem . setScheduleItemName ( itemBudget . getItemName ( ) ) ;
costItem . setScheduleItemAmount ( itemBudget . getFinalBudgetAmount ( ) ) ;
costItem . setScheduleItemAmountUsed ( itemBudget . getUsedBudgetAmount ( ) ) ;
costItem . setScheduleItemAmountApply ( itemBudget . getUnUsedBudgetAmount ( ) ) ;
costItem . setScheduleItemBudgetId ( itemBudget . getId ( ) ) ;
}
allBudgetItem . add ( costItem ) ;
}
//保存
if ( costUnItems . size ( ) > 0 | | budgetLogList . size ( ) < 1 ) {
sysTableTemp . setResultMsg ( "预算未匹配" ) ;
StringBuilder strBuild = new StringBuilder ( ) ;
for ( TbsCostUnItem item : costUnItems ) {
String string = "【科目:" + item . getSubjectCode ( ) + item . getSubjectName ( )
+ " 成本中心:" + item . getCenterCode ( ) + item . getCenterName ( )
+ " 品类:" + item . getTargetLevelPathNames ( )
+ " 时间:" + item . getActStartDate ( ) + "-" + item . getActEndDate ( ) + "】 \t " ;
strBuild . append ( string ) ;
}
sysTableTemp . setRemark ( strBuild . toString ( ) ) ;
saveTableTmp ( sysTableTemp ) ;
log . error ( "预算未匹配:{}" , costApplyId ) ;
return R . error ( ) ;
} else {
String budgetCodes = budgetLogList . stream ( ) . map ( TbsBudgetLog : : getBudgetCode )
. distinct ( ) . collect ( Collectors . joining ( "," ) ) ;
sysTableTemp . setResultMsg ( "预算超支" ) ;
sysTableTemp . setRemark ( "超支的预算编码:" + budgetCodes ) ;
saveTableTmp ( sysTableTemp ) ;
log . error ( "预算超支:{}" , costApplyId ) ;
}
//判断是否正常数据
LambdaQueryWrapper < TbsBudgetCostItem > citemLqw = new LambdaQueryWrapper < > ( ) ;
citemLqw . eq ( TbsBudgetCostItem : : getCostApplyId , costApplyId ) ;
List < TbsBudgetCostItem > itemList = budgetCostItemService . list ( citemLqw ) ;
// 设置remark标记防止误删,移除旧的记录
for ( TbsBudgetCostItem costItem : itemList ) {
costItem . setRemark ( "toDel" ) ;
}
budgetCostItemService . updateBatchById ( itemList ) ;
List < Long > itemIds = itemList . stream ( ) . map ( TbsBudgetCostItem : : getId ) . collect ( Collectors . toList ( ) ) ;
budgetCostItemService . removeBatchByIds ( itemIds ) ;
//重新保存
budgetCostItemService . saveBatch ( allBudgetItem ) ;
// 设置remark标记防止误删,移除旧的记录
LambdaQueryWrapper < TbsBudgetLog > bLqw = new LambdaQueryWrapper < > ( ) ;
bLqw . eq ( TbsBudgetLog : : getCostApplyId , costApplyId ) ;
List < TbsBudgetLog > dbbudgetLogs = budgetLogService . list ( bLqw ) ;
for ( TbsBudgetLog budgetLog : dbbudgetLogs ) {
budgetLog . setRemark ( "toDel" ) ;
}
budgetLogService . updateBatchById ( dbbudgetLogs ) ;
List < Long > budIds = dbbudgetLogs . stream ( ) . map ( TbsBudgetLog : : getId ) . collect ( Collectors . toList ( ) ) ;
budgetLogService . removeBatchByIds ( budIds ) ;
//重新保存
if ( CollectionUtil . isNotEmpty ( budgetLogList ) ) {
budgetLogService . saveBatch ( budgetLogList ) ;
}
return R . error ( "预算超支" ) ;
}
/ * *
@ -101,7 +283,7 @@ public class TbsCostApplyTestController {
* @param costApplyId
* @return
* /
@GetMapping ( "/rebuild" )
//@GetMapping("/rebuild")
public R < ? > rebuildCost ( Long costApplyId ) {
SysTableTemp sysTableTemp = new SysTableTemp ( ) ;
@ -111,7 +293,7 @@ public class TbsCostApplyTestController {
TbsCostApply costApply = tbsCostApplyService . getById ( costApplyId ) ;
TbsBudgetTableResultVo resultVo = tbsBudgetMatchApplication . getMatchResult ( costApplyId , false ) ;
TbsBudgetTableResultVo resultVo = tbsBudgetMatchApplication . getMatchResult ( costApplyId , false , false ) ;
List < TbsActivity > activityList = tbsActivityService . listByCostApplyId ( costApplyId ) ;
@ -221,10 +403,11 @@ public class TbsCostApplyTestController {
//保存
if ( costUnItems . size ( ) > 0 | | budgetLogList . size ( ) < 1 ) {
sysTableTemp . setResultMsg ( "预算未匹配" ) ;
tableTempMapper . insert ( sysTableTemp ) ;
saveTableTmp ( sysTableTemp ) ;
log . error ( "预算未匹配:{}" , costApplyId ) ;
return R . error ( ) ;
}
//判断是否正常数据
LambdaQueryWrapper < TbsBudgetCostItem > citemLqw = new LambdaQueryWrapper < > ( ) ;
citemLqw . eq ( TbsBudgetCostItem : : getCostApplyId , costApplyId ) ;
@ -246,12 +429,12 @@ public class TbsCostApplyTestController {
}
if ( isMatch ) {
sysTableTemp . setResultMsg ( "预算正常" ) ;
tableTempMapper . insert ( sysTableTemp ) ;
saveTableTmp ( sysTableTemp ) ;
return R . ok ( "预算正常" ) ;
}
sysTableTemp . setResultMsg ( "需重新生成但含释放" ) ;
tableTempMapper . insert ( sysTableTemp ) ;
saveTableTmp ( sysTableTemp ) ;
return R . ok ( "预算正常" ) ;
@ -291,13 +474,7 @@ public class TbsCostApplyTestController {
}
/ * *
* 重新核销
* @return
* /
public R < ? > reBuildCheck ( ) {
return R . ok ( ) ;
}
}