Commit 7278a045 authored by 施翔轲's avatar 施翔轲

【优化】工程量差值——措施费相关

parent 029127da
...@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import lombok.Data; import lombok.Data;
@Data @Data
...@@ -55,6 +57,12 @@ public class CbCostMeasureActual { ...@@ -55,6 +57,12 @@ public class CbCostMeasureActual {
@TableField(value = "submit_project_volume") @TableField(value = "submit_project_volume")
private BigDecimal submitProjectVolume; private BigDecimal submitProjectVolume;
/**
* 本月差值
*/
@TableField(value = "difference")
private BigDecimal difference;
/** /**
* 年月 * 年月
*/ */
......
...@@ -54,6 +54,11 @@ public class CbCostMeasureActualSaveBo { ...@@ -54,6 +54,11 @@ public class CbCostMeasureActualSaveBo {
*/ */
private BigDecimal submitProjectVolume; private BigDecimal submitProjectVolume;
/**
* 本月差值
*/
private BigDecimal difference;
/** /**
* 年月 * 年月
*/ */
......
...@@ -140,6 +140,16 @@ public class CbCostMeasureActualVo { ...@@ -140,6 +140,16 @@ public class CbCostMeasureActualVo {
*/ */
private BigDecimal submitProjectVolume; private BigDecimal submitProjectVolume;
/**
* 本月差值
*/
private BigDecimal difference;
/**
* 截止本月差值
*/
private BigDecimal sumDifference;
/** /**
* 年月 * 年月
*/ */
......
...@@ -6,6 +6,7 @@ import com.dsk.cscec.domain.bo.CbCostMeasureActualBo; ...@@ -6,6 +6,7 @@ import com.dsk.cscec.domain.bo.CbCostMeasureActualBo;
import com.dsk.cscec.domain.bo.CbCostMeasureActualSaveBo; import com.dsk.cscec.domain.bo.CbCostMeasureActualSaveBo;
import com.dsk.cscec.domain.vo.CbCostMeasureActualVo; import com.dsk.cscec.domain.vo.CbCostMeasureActualVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.ehcache.javadoc.PrivateApi;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
...@@ -24,4 +25,6 @@ public interface CbCostMeasureActualMapper extends BaseMapper<CbCostMeasureActua ...@@ -24,4 +25,6 @@ public interface CbCostMeasureActualMapper extends BaseMapper<CbCostMeasureActua
BigDecimal selectSumData(CbCostMeasureActualSaveBo bo); BigDecimal selectSumData(CbCostMeasureActualSaveBo bo);
BigDecimal selectMonthProjectVolumeByLevel(@Param("level") Integer level,@Param("projectId") Long projectId,@Param("month") String month); BigDecimal selectMonthProjectVolumeByLevel(@Param("level") Integer level,@Param("projectId") Long projectId,@Param("month") String month);
BigDecimal calculateSumDifference(@Param("item") CbCostMeasureActualVo item);
} }
\ No newline at end of file
...@@ -7,10 +7,12 @@ import cn.hutool.core.lang.Assert; ...@@ -7,10 +7,12 @@ 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.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.util.IdUtil;
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;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
...@@ -18,6 +20,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; ...@@ -18,6 +20,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.exception.ServiceException;
import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.JsonUtils; import com.dsk.common.utils.JsonUtils;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.poi.ExcelUtil; import com.dsk.common.utils.poi.ExcelUtil;
...@@ -32,7 +36,9 @@ import com.dsk.cscec.domain.vo.CbProjectExpenseSummaryImportVo; ...@@ -32,7 +36,9 @@ import com.dsk.cscec.domain.vo.CbProjectExpenseSummaryImportVo;
import com.dsk.cscec.domain.vo.CbProjectExpenseSummaryVo; import com.dsk.cscec.domain.vo.CbProjectExpenseSummaryVo;
import com.dsk.cscec.listener.ProjectCostMeasureImportListener; import com.dsk.cscec.listener.ProjectCostMeasureImportListener;
import com.dsk.cscec.listener.ProjectCostMeasureSummaryImportListener; import com.dsk.cscec.listener.ProjectCostMeasureSummaryImportListener;
import com.dsk.cscec.mapper.CbCostMeasureActualMapper;
import com.dsk.cscec.service.*; import com.dsk.cscec.service.*;
import com.sun.org.apache.bcel.internal.generic.IFNULL;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -40,6 +46,7 @@ import org.springframework.stereotype.Service; ...@@ -40,6 +46,7 @@ import org.springframework.stereotype.Service;
import com.dsk.cscec.mapper.CbCostMeasureMapper; import com.dsk.cscec.mapper.CbCostMeasureMapper;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.InputStream; import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -60,15 +67,12 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -60,15 +67,12 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
@Autowired @Autowired
private CbProjectRecordService cbProjectRecordService; private CbProjectRecordService cbProjectRecordService;
@Autowired @Autowired
private ICbCostMeasureActualService cbCostMeasureActualService; private ICbCostMeasureActualService cbCostMeasureActualService;
@Resource
private CbCostMeasureActualMapper cbCostMeasureActualMapper;
@Autowired @Autowired
private CbProjectFileService cbProjectFileService; private CbProjectFileService cbProjectFileService;
@Autowired @Autowired
private CbProjectExpenseSummaryService cbProjectExpenseSummaryService; private CbProjectExpenseSummaryService cbProjectExpenseSummaryService;
...@@ -184,6 +188,10 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -184,6 +188,10 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
//查询项目某项措施费所有计划成本 //查询项目某项措施费所有计划成本
dataList = baseMapper.selectListByProjectAndNo(costMeasureActualBo); dataList = baseMapper.selectListByProjectAndNo(costMeasureActualBo);
//统计截止本月差值
dataList.forEach(item -> {
item.setSumDifference(cbCostMeasureActualMapper.calculateSumDifference(item));
});
//配置类 //配置类
TreeNodeConfig treeNodeConfig = new TreeNodeConfig(); TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
treeNodeConfig.setIdKey("id"); treeNodeConfig.setIdKey("id");
...@@ -218,6 +226,8 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -218,6 +226,8 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
treeNode.putExtra("projectVolume", object.getProjectVolume()); treeNode.putExtra("projectVolume", object.getProjectVolume());
treeNode.putExtra("currentProjectVolume", object.getCurrentProjectVolume()); treeNode.putExtra("currentProjectVolume", object.getCurrentProjectVolume());
treeNode.putExtra("submitProjectVolume", object.getSubmitProjectVolume()); treeNode.putExtra("submitProjectVolume", object.getSubmitProjectVolume());
treeNode.putExtra("difference", object.getDifference());
treeNode.putExtra("sumDifference", object.getSumDifference());
treeNode.putExtra("month", object.getMonth()); treeNode.putExtra("month", object.getMonth());
treeNode.putExtra("pushTime", object.getPushTime()); treeNode.putExtra("pushTime", object.getPushTime());
treeNode.putExtra("pushDataJson", object.getPushDataJson()); treeNode.putExtra("pushDataJson", object.getPushDataJson());
...@@ -230,7 +240,25 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -230,7 +240,25 @@ 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); //this.recursionSaveBatchCostMeasureActual(boList, boList.get(0).getId(), null);
Assert.isTrue(ObjectUtil.isNotEmpty(boList), "数据不能为空");
boList.forEach(item -> {
CbCostMeasureActual actual = BeanUtil.toBean(item, CbCostMeasureActual.class);
Assert.notNull(actual.getPlanMeasureId(), "基础数据id不能为空");
Assert.notNull(actual.getMonth(), "填写月份不能为空");
actual.setId(ObjectUtil.isNull(actual.getId()) ? IdUtil.getSnowflakeNextId() : actual.getId());
// 查询计划成本累积实际成本
BigDecimal bigDecimal = cbCostMeasureActualService.selectSumData(item);
actual.setCurrentProjectVolume(NumberUtil.add(bigDecimal, actual.getProjectVolume()));
actual.setUpdateUser(Objects.requireNonNull(LoginHelper.getUsername()));
actual.setUpdateId(Objects.requireNonNull(LoginHelper.getUserId()));
actual.setDelFlag(0);
boolean b = cbCostMeasureActualService.saveOrUpdate(actual);
if (!b) {
log.error("CbQuantitySummaryServiceImpl.updateActual() data insert error! data:" + JSONUtil.toJsonStr(actual));
throw new ServiceException("数据添加错误!");
}
});
} }
/** /**
...@@ -246,6 +274,7 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -246,6 +274,7 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
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)) { if (ObjectUtil.isNotNull(planMeasureId)) {
cbCostMeasureActual.setPlanMeasureId(planMeasureIdTemp++); cbCostMeasureActual.setPlanMeasureId(planMeasureIdTemp++);
} }
......
...@@ -200,4 +200,11 @@ ...@@ -200,4 +200,11 @@
AND t1.level=#{level} AND t1.level=#{level}
AND t.`month`=#{month} AND t.`month`=#{month}
</select> </select>
<select id="calculateSumDifference" resultType="java.math.BigDecimal">
select ifnull(sum(ccma.difference), 0) sumDifference
from cb_cost_measure_actual ccma
where ccma.plan_measure_id = #{item.id}
and ccma.month &lt;= #{item.month}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -41,9 +41,9 @@ ...@@ -41,9 +41,9 @@
<select id="selectListByProjectAndNo" resultType="com.dsk.cscec.domain.vo.CbCostMeasureActualVo"> <select id="selectListByProjectAndNo" resultType="com.dsk.cscec.domain.vo.CbCostMeasureActualVo">
SELECT t.*,t1.actualId,t1.plan_measure_id,t1.month_cost_rate, t1.cost_effective, t1.project_volume,t1.current_project_volume,t1.submit_project_volume,t1.`month`,t1.push_time FROM cb_cost_measure t SELECT t.*,t1.actualId,t1.plan_measure_id,t1.month_cost_rate, t1.cost_effective, t1.project_volume,t1.current_project_volume,t1.submit_project_volume,t1.difference,t1.`month`,t1.push_time FROM cb_cost_measure t
left JOIN ( left JOIN (
SELECT t.id actualId,t1.plan_measure_id,t1.month_cost_rate, t1.cost_effective,t1.project_volume, t1.current_project_volume,t1.submit_project_volume,t1.`month`,t1.push_time FROM cb_cost_measure t SELECT t1.id actualId,t1.plan_measure_id,t1.month_cost_rate, t1.cost_effective,t1.project_volume, t1.current_project_volume,t1.submit_project_volume,t1.difference,t1.`month`,t1.push_time FROM cb_cost_measure t
inner JOIN cb_cost_measure_actual t1 ON t1.plan_measure_id=t.id inner JOIN cb_cost_measure_actual t1 ON t1.plan_measure_id=t.id
WHERE WHERE
t.project_id=#{projectId} t.project_id=#{projectId}
......
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