Commit 72f96185 authored by 施翔轲's avatar 施翔轲

递归保存或修改每月措施费

parent 456dfb57
...@@ -13,6 +13,7 @@ import javax.validation.constraints.NotNull; ...@@ -13,6 +13,7 @@ import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern; import javax.validation.constraints.Pattern;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
@Data @Data
public class CbCostMeasureActualSaveBo { public class CbCostMeasureActualSaveBo {
...@@ -78,7 +79,8 @@ public class CbCostMeasureActualSaveBo { ...@@ -78,7 +79,8 @@ public class CbCostMeasureActualSaveBo {
*/ */
private String updateId; private String updateId;
/**
* 子集
*/
private List<CbCostMeasureActualSaveBo> children;
} }
\ No newline at end of file
package com.dsk.cscec.service.impl; package com.dsk.cscec.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.io.file.FileNameUtil; import cn.hutool.core.io.file.FileNameUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNode;
import cn.hutool.core.lang.tree.TreeNodeConfig; import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.lang.tree.TreeUtil; import cn.hutool.core.lang.tree.TreeUtil;
import cn.hutool.core.math.MathUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.ReUtil;
...@@ -21,9 +18,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; ...@@ -21,9 +18,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.excel.ExcelResult; import com.dsk.common.excel.ExcelResult;
import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.JsonUtils; import com.dsk.common.utils.JsonUtils;
import com.dsk.common.utils.TreeBuildUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.poi.ExcelUtil; import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.cscec.constant.CbProjectConstants; import com.dsk.cscec.constant.CbProjectConstants;
import com.dsk.cscec.domain.*; import com.dsk.cscec.domain.*;
...@@ -60,6 +56,7 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -60,6 +56,7 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
private final String firstPattern = "[\\((]*[一|二|三|四|五|六|七|八|九|十]+[\\))]*"; private final String firstPattern = "[\\((]*[一|二|三|四|五|六|七|八|九|十]+[\\))]*";
private final Pattern secondPattern = Pattern.compile("^\\d+(\\.\\d+)*$"); private final Pattern secondPattern = Pattern.compile("^\\d+(\\.\\d+)*$");
private final Pattern pattern3 = Pattern.compile("^([1-9][0-9]*|0)$"); private final Pattern pattern3 = Pattern.compile("^([1-9][0-9]*|0)$");
private Long planMeasureIdTemp;
@Autowired @Autowired
private CbProjectRecordService cbProjectRecordService; private CbProjectRecordService cbProjectRecordService;
...@@ -197,7 +194,7 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -197,7 +194,7 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
treeNode.setId(object.getId());//id treeNode.setId(object.getId());//id
treeNode.setParentId(object.getParentId());//父id treeNode.setParentId(object.getParentId());//父id
// 扩展属性 ... // 扩展属性 ...
treeNode.putExtra("actualId",object.getActualId()); treeNode.putExtra("actualId", object.getActualId());
treeNode.putExtra("itemContent", object.getItemContent()); treeNode.putExtra("itemContent", object.getItemContent());
treeNode.putExtra("number", object.getNumber()); treeNode.putExtra("number", object.getNumber());
treeNode.putExtra("workContent", object.getWorkContent()); treeNode.putExtra("workContent", object.getWorkContent());
...@@ -232,23 +229,47 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -232,23 +229,47 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
@Override @Override
public void saveBatchCostMeasureActual(List<CbCostMeasureActualSaveBo> boList) { public void saveBatchCostMeasureActual(List<CbCostMeasureActualSaveBo> boList) {
//递归
this.recursionSaveBatchCostMeasureActual(boList, boList.get(0).getId(), null);
}
/**
* 递归保存或修改每月措施费
*
* @param boList 每月措施费集合
* @param planMeasureId 计划成本措施费id
* @param month 月份
*/
public void recursionSaveBatchCostMeasureActual(List<CbCostMeasureActualSaveBo> boList, Long planMeasureId, String month) {
List<CbCostMeasureActual> saveList = new ArrayList<>(); List<CbCostMeasureActual> saveList = new ArrayList<>();
planMeasureIdTemp = planMeasureId;
for (CbCostMeasureActualSaveBo cbCostMeasureActualSaveBo : boList) { for (CbCostMeasureActualSaveBo cbCostMeasureActualSaveBo : boList) {
CbCostMeasureActual cbCostMeasureActual = new CbCostMeasureActual(); CbCostMeasureActual cbCostMeasureActual = new CbCostMeasureActual();
BeanUtil.copyProperties(cbCostMeasureActualSaveBo, cbCostMeasureActual); BeanUtil.copyProperties(cbCostMeasureActualSaveBo, cbCostMeasureActual);
if (ObjectUtil.isNotNull(planMeasureId)) {
cbCostMeasureActual.setPlanMeasureId(planMeasureIdTemp++);
}
if (StringUtils.isNotEmpty(month)) {
cbCostMeasureActual.setMonth(month);
}
cbCostMeasureActual.setDelFlag(0); cbCostMeasureActual.setDelFlag(0);
// cbCostMeasureActual.setUpdateId(LoginHelper.getUserId()); // cbCostMeasureActual.setUpdateId(LoginHelper.getUserId());
// cbCostMeasureActual.setUpdateUser(LoginHelper.getUsername()); // cbCostMeasureActual.setUpdateUser(LoginHelper.getUsername());
// 查询计划成本累积实际成本 // 查询计划成本累积实际成本
BigDecimal bigDecimal = cbCostMeasureActualService.selectSumData(cbCostMeasureActualSaveBo); BigDecimal bigDecimal = cbCostMeasureActualService.selectSumData(cbCostMeasureActualSaveBo);
cbCostMeasureActual.setCurrentProjectVolume(NumberUtil.add(bigDecimal,cbCostMeasureActual.getProjectVolume())); cbCostMeasureActual.setCurrentProjectVolume(NumberUtil.add(bigDecimal, cbCostMeasureActual.getProjectVolume()));
saveList.add(cbCostMeasureActual); saveList.add(cbCostMeasureActual);
List<CbCostMeasureActualSaveBo> childrenList = cbCostMeasureActualSaveBo.getChildren();
if (ObjectUtil.isNotNull(childrenList) && !childrenList.isEmpty()) {
this.recursionSaveBatchCostMeasureActual(childrenList, planMeasureIdTemp, cbCostMeasureActualSaveBo.getMonth());
}
} }
cbCostMeasureActualService.saveOrUpdateBatch(saveList); cbCostMeasureActualService.saveOrUpdateBatch(saveList);
CbCostMeasureActual cbCostMeasureActual = saveList.get(0); //CbCostMeasureActual cbCostMeasureActual = saveList.get(0);
//todo 查询最新的二级费用合计, 用于更新一级费用项 //todo 查询最新的二级费用合计, 用于更新一级费用项
// cbCostMeasureActualService.selectMonthProjectVolumeByLevel(1,cbCostMeasureActual.GET); //cbCostMeasureActualService.selectMonthProjectVolumeByLevel(1,cbCostMeasureActual.GET);
//更新 //更新
} }
...@@ -380,8 +401,8 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -380,8 +401,8 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
public String lastProjectVolume(Long measuresId) { public String lastProjectVolume(Long measuresId) {
LambdaQueryWrapper<CbCostMeasureActual> lambdaQueryWrapper = Wrappers.lambdaQuery(); LambdaQueryWrapper<CbCostMeasureActual> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(CbCostMeasureActual::getPlanMeasureId, measuresId) lambdaQueryWrapper.eq(CbCostMeasureActual::getPlanMeasureId, measuresId)
.isNotNull(CbCostMeasureActual::getPushTime) .isNotNull(CbCostMeasureActual::getPushTime)
.orderByDesc(CbCostMeasureActual::getUpdateTime).last(" limit 1"); .orderByDesc(CbCostMeasureActual::getUpdateTime).last(" limit 1");
CbCostMeasureActual cbCostMeasureActual = cbCostMeasureActualService.getOne(lambdaQueryWrapper); CbCostMeasureActual cbCostMeasureActual = cbCostMeasureActualService.getOne(lambdaQueryWrapper);
if (ObjectUtil.isNotEmpty(cbCostMeasureActual)) { if (ObjectUtil.isNotEmpty(cbCostMeasureActual)) {
return cbCostMeasureActual.getPushDataJson(); return cbCostMeasureActual.getPushDataJson();
...@@ -408,10 +429,10 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -408,10 +429,10 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
List<CbCostMeasureActualVo> monthActualCostList = cbCostMeasureActualService.getMonthActualCostList(projectId, month); List<CbCostMeasureActualVo> monthActualCostList = cbCostMeasureActualService.getMonthActualCostList(projectId, month);
if (CollectionUtil.isNotEmpty(monthActualCostList)) { if (CollectionUtil.isNotEmpty(monthActualCostList)) {
map = monthActualCostList.stream() map = monthActualCostList.stream()
.collect(Collectors.toMap( .collect(Collectors.toMap(
CbCostMeasureActualVo::getItemContent, // 把CbCostMeasureActualVo属性提取为map的key CbCostMeasureActualVo::getItemContent, // 把CbCostMeasureActualVo属性提取为map的key
CbCostMeasureActualVo::getCostEffective // 把CbCostMeasureActualVo属性提取为map的value CbCostMeasureActualVo::getCostEffective // 把CbCostMeasureActualVo属性提取为map的value
)); ));
} }
for (CbProjectExpenseSummary cbProjectExpenseSummary : cbProjectExpenseSummaries) { for (CbProjectExpenseSummary cbProjectExpenseSummary : cbProjectExpenseSummaries) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment