diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java index 3bb40898..2e48570d 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java @@ -313,7 +313,7 @@ public class BmsSupplierServiceImpl extends ServiceImpl reqResult = seeYonRequestBaseService.getBase(ERP_CUS_AMOUNT_QUO+"?supplierCode="+supplierCode,"获取客户报价单累计["+supplierCode+"]金额"); - if(reqResult==null || !reqResult.getStatus().equals(200)){ + if(reqResult==null || !reqResult.getStatus().equals(200)||reqResult.getData()==null){ //有错误退出 log.warn("获取客户报价单累计金额,结果失败,cusCode:{}",supplierCode); return null; diff --git a/src/main/java/com/qs/serve/modules/erp/controller/ErpCustomerController.java b/src/main/java/com/qs/serve/modules/erp/controller/ErpCustomerController.java index 41713590..2f92ef46 100644 --- a/src/main/java/com/qs/serve/modules/erp/controller/ErpCustomerController.java +++ b/src/main/java/com/qs/serve/modules/erp/controller/ErpCustomerController.java @@ -70,8 +70,10 @@ public class ErpCustomerController { amountResult.setPreAmount(new BigDecimal(amount)); if(amount.equals("-1")){ amountResult.setAmount(BigDecimal.ONE.negate()); - }else { + }else if (quoAmount!=null){ amountResult.setAmount(amountResult.getPreAmount().subtract(quoAmount)); + }else { + amountResult.setAmount(amountResult.getPreAmount()); } return R.ok(amountResult); } diff --git a/src/main/java/com/qs/serve/modules/sys/entity/SysTableTemp.java b/src/main/java/com/qs/serve/modules/sys/entity/SysTableTemp.java index 818129ae..1441d9e8 100644 --- a/src/main/java/com/qs/serve/modules/sys/entity/SysTableTemp.java +++ b/src/main/java/com/qs/serve/modules/sys/entity/SysTableTemp.java @@ -49,6 +49,8 @@ public class SysTableTemp implements Serializable { private Integer dealState; + private String remark; + /** 创建时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java index 8b9900a8..e49b50dc 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java @@ -276,13 +276,15 @@ public class TbsActivityController { List activitySubjects = activitySubjectService.list(qw); List activityCenters = activityCenterService.list(qw); + TbsCostApply costApply = costApplyService.getById(activity.getCostApplyId()); + //成本中心关联出相关预算 for (TbsActivityCenter center : activityCenters) { //没通过加载可选的所有预算,已通过加载出选中的预算 String subjectId = center.getSubjectId()+""; String centerType = center.getCenterType(); String centerId = center.getCenterId(); - if(activity.getCostPassFlag().equals(1)){ + if(costApply.getChargeState()>0||activity.getCostPassFlag().equals(1)){ //选中的预算 String activityId = activity.getId()+""; List list = tbsScheduleItemBudgetMapper.listByActivityAndSubjectAndCenter( diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java index a729087a..4481756f 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java @@ -495,5 +495,15 @@ public class TbsBudgetController { return R.ok(); } + /** + * 补偿缺失的项 + * @return + */ + @GetMapping("/syncMissSchItem") + public R syncMissSchItem(){ + tbsBudgetService.syncMissSchItem(); + return R.ok(); + } + } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java index e2ba1938..1d7a58e5 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java @@ -124,7 +124,7 @@ public class TbsCostApplyController { @PreAuthorize("hasRole('tbs:costApply:query')") public R preview(Long id){ TbsCostApply costApply = tbsCostApplyService.getById(id); - TbsBudgetTableVo tableVo = tbsBudgetMatchApplication.getMatchResult(id,true).getTableVo(); + TbsBudgetTableVo tableVo = tbsBudgetMatchApplication.getMatchResult(id,true,false).getTableVo(); // if(costApply.getMatchType().equals(0)){ // TbsBudgetCostResult result = budgetApplicationService.buildBudgetCostResult(id,false,true); // tableVo = result.getTableData(); diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyTestController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyTestController.java index 6793da15..17e655c0 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyTestController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyTestController.java @@ -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 tableTempMapper; + private SysTableTempMapper sysTableTempMapper; - @GetMapping("/rebuildAll") + + //@GetMapping("/overspendRebuildAll") public R ss(){ -// for (Long id : ids) { -// this.rebuildCost(id); -// } - return R.ok(); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SysTableTemp::getOptionTitle,"rebuildCost"); + lqw.likeRight(SysTableTemp::getResultMsg,"预算未匹配"); + lqw.eq(SysTableTemp::getDealState,0); + List 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 activityList = tbsActivityService.listByCostApplyId(costApplyId); + + SysUser sysUser = sysUserService.getById(costApply.getUserId()); + + // 未命中预算 + List costUnItems = new ArrayList<>(); + // 所有记录情况 + List allBudgetItem = new ArrayList<>(); + // 命中的预算 + List budgetLogList = new ArrayList<>(); + + Map 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 citemLqw = new LambdaQueryWrapper<>(); + citemLqw.eq(TbsBudgetCostItem::getCostApplyId,costApplyId); + List itemList = budgetCostItemService.list(citemLqw); + + // 设置remark标记防止误删,移除旧的记录 + for (TbsBudgetCostItem costItem : itemList) { + costItem.setRemark("toDel"); + } + budgetCostItemService.updateBatchById(itemList); + List itemIds = itemList.stream().map(TbsBudgetCostItem::getId).collect(Collectors.toList()); + budgetCostItemService.removeBatchByIds(itemIds); + //重新保存 + budgetCostItemService.saveBatch(allBudgetItem); + + // 设置remark标记防止误删,移除旧的记录 + LambdaQueryWrapper bLqw = new LambdaQueryWrapper<>(); + bLqw.eq(TbsBudgetLog::getCostApplyId,costApplyId); + List dbbudgetLogs = budgetLogService.list(bLqw); + for (TbsBudgetLog budgetLog : dbbudgetLogs) { + budgetLog.setRemark("toDel"); + } + budgetLogService.updateBatchById(dbbudgetLogs); + List 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 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 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(); - } + } diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetMapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetMapper.java index 1b12d3ea..31eff7aa 100644 --- a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetMapper.java +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetMapper.java @@ -17,6 +17,19 @@ import java.util.List; */ public interface TbsBudgetMapper extends BaseMapper { + /** + * 查询缺失tbs_schedule_item_budget的预算ID + * @return + */ + @InterceptorIgnore(tenantLine = "true") + @Select("select budget_id from ( " + + " select budget_id,tbs_schedule_item_budget.schedule_id,count(1) as count_bud from tbs_schedule_item_budget where tbs_schedule_item_budget.del_flag = 0 group by budget_id " + + ") tmp1 left join ( " + + " select schedule_id,count(1) as count_sch from tbs_schedule_item where tbs_schedule_item.del_flag = 0 group by schedule_id " + + ") tmp2 on tmp1.schedule_id = tmp2.schedule_id " + + " where count_bud != count_sch ") + List selectMissSchItemBudgetId(); + /** * 查询费用id * @param budgetSo diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java index 4cc37db0..576213f7 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java @@ -39,7 +39,14 @@ public class TbsBudgetMatchApplication { private final TbsBudgetMatchMapper budgetMatchMapper; private final TbsBudgetMapper budgetMapper; - public TbsBudgetTableResultVo getMatchResult(Long costApplyId,boolean buildTable){ + /** + * 构建匹配预算 + * @param costApplyId + * @param buildTable + * @param overspendAmt 允许超额 + * @return + */ + public TbsBudgetTableResultVo getMatchResult(Long costApplyId,boolean buildTable,boolean overspendAmt){ List activityList = activityService.listByCostApplyId(costApplyId); @@ -145,20 +152,28 @@ public class TbsBudgetMatchApplication { } } - //开始匹配主要逻辑 - Long scheduleItemBudgetId = itemBudget.getId(); - BigDecimal usableAmt = usableAmountMap.get(scheduleItemBudgetId); - if(usableAmt==null){ - usableAmt = itemBudget.getUnUsedBudgetAmount(); - } - if(usableAmt!=null&&usableAmt.compareTo(centerGoods.getCenterGoodsAmount())>=0){ - usableAmt = usableAmt.subtract(centerGoods.getCenterGoodsAmount()); - //扣减后存放map - usableAmountMap.put(scheduleItemBudgetId,usableAmt); - //标记使用那个预算 - centerGoods.setScheduleItemBudgetId(itemBudget.getId()); + if(overspendAmt){ + //允许超预算 + Long scheduleItemBudgetId = itemBudget.getId(); matchItemBudgetsMap.put(scheduleItemBudgetId,itemBudget); + centerGoods.setScheduleItemBudgetId(itemBudget.getId()); break; + }else { + //开始匹配主要逻辑 + Long scheduleItemBudgetId = itemBudget.getId(); + BigDecimal usableAmt = usableAmountMap.get(scheduleItemBudgetId); + if(usableAmt==null){ + usableAmt = itemBudget.getUnUsedBudgetAmount(); + } + if(usableAmt!=null&&usableAmt.compareTo(centerGoods.getCenterGoodsAmount())>=0){ + usableAmt = usableAmt.subtract(centerGoods.getCenterGoodsAmount()); + //扣减后存放map + usableAmountMap.put(scheduleItemBudgetId,usableAmt); + //标记使用那个预算 + centerGoods.setScheduleItemBudgetId(itemBudget.getId()); + matchItemBudgetsMap.put(scheduleItemBudgetId,itemBudget); + break; + } } } } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java index 42f377a1..b8b57eef 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java @@ -58,5 +58,7 @@ public interface TbsBudgetService extends IService { void syncStopFlag(); + void syncMissSchItem(); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java index c610402c..bcd67ad4 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java @@ -353,9 +353,40 @@ public class TbsBudgetServiceImpl extends ServiceImpl budget.setBudgetCheckState(TbsCommonCheckState.State_2_finished); this.updateById(budget); SysUser sysUser = sysUserService.getById(budget.getUserId()); + + //补偿缺失的编码 + List scheduleItems = scheduleItemService.listByScheduleId(budget.getScheduleId()); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(TbsScheduleItemBudget::getBudgetId,id); List scheduleItemBudgets = scheduleItemBudgetService.list(lqw); + List addSchItemBudgets = new ArrayList<>(); + for (TbsScheduleItem item : scheduleItems) { + boolean match = false; + for (TbsScheduleItemBudget itemBudget : scheduleItemBudgets) { + if (item.getId().equals(itemBudget.getScheduleItemId())){ + match = true; + } + } + if(!match){ + TbsScheduleItemBudget itemBudget = new TbsScheduleItemBudget(); + itemBudget.setScheduleId(item.getScheduleId()); + itemBudget.setScheduleItemId(item.getId()); + itemBudget.setItemName(item.getItemName()); + itemBudget.setStartDate(item.getStartDate()); + itemBudget.setEndDate(item.getEndDate()); + itemBudget.setBudgetId(id); + itemBudget.setBudgetAmount(BigDecimal.ZERO); + itemBudget.setPreDispatchAmount(BigDecimal.ZERO); + itemBudget.setPreDispatchAmountFirst(BigDecimal.ZERO); + addSchItemBudgets.add(itemBudget); + } + } + if(addSchItemBudgets.size()>0){ + scheduleItemBudgetService.saveBatch(addSchItemBudgets); + scheduleItemBudgets.addAll(addSchItemBudgets); + } + + //保存预算流水日志 List budgetLogList = new ArrayList<>(); for (TbsScheduleItemBudget scheduleItemBudget : scheduleItemBudgets) { @@ -1164,5 +1195,54 @@ public class TbsBudgetServiceImpl extends ServiceImpl this.update(numalBudget,new LambdaQueryWrapper().in(TbsBudget::getId,budgetIds2)); } } + + @Override + @Transactional + public void syncMissSchItem() { + List itemBudgetIds = baseMapper.selectMissSchItemBudgetId(); + //List itemBudgetIds = Arrays.asList(654L); + for (Long budgetId : itemBudgetIds) { + TbsBudget budget = baseMapper.selectById(budgetId); + SysUser sysUser = sysUserService.getById(budget.getUserId()); + List scheduleItems = scheduleItemService.listByScheduleId(budget.getScheduleId()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsScheduleItemBudget::getBudgetId,budgetId); + List scheduleItemBudgets = scheduleItemBudgetService.list(lqw); + List addSchItemBudgets = new ArrayList<>(); + for (TbsScheduleItem item : scheduleItems) { + boolean match = false; + for (TbsScheduleItemBudget itemBudget : scheduleItemBudgets) { + if (item.getId().equals(itemBudget.getScheduleItemId())){ + match = true; + } + } + if(!match){ + TbsScheduleItemBudget itemBudget = new TbsScheduleItemBudget(); + itemBudget.setScheduleId(item.getScheduleId()); + itemBudget.setScheduleItemId(item.getId()); + itemBudget.setItemName(item.getItemName()); + itemBudget.setStartDate(item.getStartDate()); + itemBudget.setEndDate(item.getEndDate()); + itemBudget.setBudgetId(budgetId); + itemBudget.setBudgetAmount(BigDecimal.ZERO); + itemBudget.setPreDispatchAmount(BigDecimal.ZERO); + itemBudget.setPreDispatchAmountFirst(BigDecimal.ZERO); + addSchItemBudgets.add(itemBudget); + } + } + if(addSchItemBudgets.size()>0){ + scheduleItemBudgetService.saveBatch(addSchItemBudgets); + } + //保存预算流水日志 + List budgetLogList = new ArrayList<>(); + for (TbsScheduleItemBudget scheduleItemBudget : addSchItemBudgets) { + TbsBudgetLog budgetLog = TbsBudgetLogBuildUtil.toTbsBudgetLog(sysUser, budget, scheduleItemBudget,BudgetLogOptFlag.State_0,scheduleItemBudget.getBudgetAmount()); + budgetLogList.add(budgetLog); + } + budgetLogService.saveBatch(budgetLogList); + } + + } + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index 21198702..b5267b65 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java @@ -365,7 +365,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl subList = new ArrayList<>();