合并到主分支 #12

Merged
bgy merged 54 commits from bgy into master 2024-08-28 10:59:12 +00:00
7 changed files with 58 additions and 150 deletions
Showing only changes of commit 339cf044a8 - Show all commits
@@ -1,37 +0,0 @@
package com.zzsmart.qomo.kn.cost.manage.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 标准成本明细表 Mapper 接口
* </p>
*
* @author
* @since 2024-06-20
*/
@Mapper
public interface CostStandardDetailMapper extends BaseMapper<CostStandardDetail> {
/**
* 分页查询
* @param page
* @param wrapper
* @return
*/
IPage<CostStandardDetailVO> pageList(@Param("page") Page<CostStandardDetailVO> page , @Param(Constants.WRAPPER) Wrapper<CostStandardDetailVO> wrapper);
/**
* 查询列表
* @param wrapper
* @return
*/
List<CostStandardDetailVO> queryListResult(@Param(Constants.WRAPPER) Wrapper<CostStandardDetailVO> wrapper);
}
@@ -1,59 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zzsmart.qomo.kn.cost.manage.mapper.CostStandardDetailMapper">
<!-- 通用查询映射结果 -->
<resultMap id="CostStandardDetailVOResultMap" type="com.zzsmart.qomo.kn.cost.manage.vo.CostStandardDetailVO">
<id column="id" property="id" />
<result column="material_number" property="materialNumber" />
<result column="material_name" property="materialName" />
<result column="parent_material_number" property="parentMaterialNumber" />
<result column="version_number_id" property="versionNumberId" />
<result column="version_number" property="versionNumber" />
<result column="level" property="level" />
<result column="figure_number" property="figureNumber" />
<result column="dosage" property="dosage" />
<result column="unit" property="unit" />
<result column="specification" property="specification" />
<result column="bom_cost" property="bomCost" />
<result column="packing_cost" property="packingCost" />
<result column="auxiliary_cost" property="auxiliaryCost" />
<result column="labor_cost" property="laborCost" />
<result column="euip_depreciation_cost" property="euipDepreciationCost" />
<result column="equip_consume_cost" property="equipConsumeCost" />
<result column="hydroelectricity_cost" property="hydroelectricityCost" />
<result column="other_cost" property="otherCost" />
<result column="trail_cost" property="trailCost" />
<result column="manufacture_cost" property="manufactureCost" />
<result column="total_labor_cost" property="totalLaborCost" />
<result column="total_equip_consume_cost" property="totalEquipConsumeCost" />
<result column="total_euip_depreciation_cost" property="totalEuipDepreciationCost" />
<result column="total_hydroelectricity_cost" property="totalHydroelectricityCost" />
<result column="total_other_cost" property="totalOtherCost" />
<result column="create_by" property="createBy" />
<result column="create_time" property="createTime" />
<result column="update_by" property="updateBy" />
<result column="update_time" property="updateTime" />
<result column="remark" property="remark" />
<result column="sort" property="sort" />
</resultMap>
<select id="pageList" resultMap="CostStandardDetailVOResultMap">
select c1.*, c2.version_number, c2.version_status, c2.stage,c2.version_year
from
app_scene_cost_standard_detail c1
left join app_scene_cost_standard_version c2 on c1.version_number_id = c2.id
${ew.customSqlSegment}
ORDER BY c1.create_time desc
</select>
<select id="queryListResult" resultMap="CostStandardDetailVOResultMap">
select c1.*, c2.version_number, c2.version_status, c2.stage,c2.version_year
from
app_scene_cost_standard_detail c1
left join app_scene_cost_standard_version c2 on c1.version_number_id = c2.id
${ew.customSqlSegment}
ORDER BY c1.create_time desc
</select>
</mapper>
@@ -490,7 +490,7 @@ public class StandardCostService {
List<AppSceneCostResultValue> appSceneCostResultValues = materialNoMap.get(key);
//按照费用类别进行分组
Map<String, List<AppSceneCostResultValue>> costTypeMap = appSceneCostResultValues.stream().filter(s -> s.getCostType() != null).collect(Collectors.groupingBy(AppSceneCostResultValue::getCostType));
//本阶标准成本
//【本阶标准成本】
BigDecimal currentCost = new BigDecimal("0.0");
//1.本阶物料成本
BigDecimal materialCost = new BigDecimal("0.0");
@@ -606,7 +606,7 @@ public class StandardCostService {
}
//3.计算出所有的单个物料的累计标准成本
List<AppSceneCostResultValue> standardCostList = standardCostService.iAppSceneCostResultValueService.getResultValueByTopMaterialNo(topMaterialCode, taskType, flowInstanceId);
//TODO 优化累计成本的计算
//【累计成本】的计算
totalCountCost(standardCostList, topMaterialCode, taskType, taskCode, flowInstanceId);
}
@@ -631,6 +631,7 @@ public class StandardCostService {
//循环计算出当前节点的累计成本
String costDetail = oldAppSceneCostResultValue.getCostDetail();
//查询当前节点各个类型的成本
BigDecimal totalMaterialCost = new BigDecimal(0);
BigDecimal totalLabourCost = new BigDecimal(0);
BigDecimal totalEquipmentCost = new BigDecimal(0);
BigDecimal totalSupplyMaterialCost = new BigDecimal(0);
@@ -638,15 +639,8 @@ public class StandardCostService {
BigDecimal totalLogisticsCost = new BigDecimal(0);
BigDecimal totalOtherCost = new BigDecimal(0);
JSONObject costDetailJson = JSON.parseObject(costDetail);
if (costDetailJson != null) {
totalLabourCost = costDetailJson.getBigDecimal(FeeTypeEnum.LaborCost.getCode());
totalEquipmentCost = costDetailJson.getBigDecimal(FeeTypeEnum.EquipmentFee.getCode());
totalSupplyMaterialCost = costDetailJson.getBigDecimal(FeeTypeEnum.SupplyMaterialFee.getCode());
totalDriveCost = costDetailJson.getBigDecimal(FeeTypeEnum.DriverFee.getCode());
totalLogisticsCost = costDetailJson.getBigDecimal(FeeTypeEnum.LogisticsFee.getCode());
totalOtherCost = costDetailJson.getBigDecimal(FeeTypeEnum.OtherFee.getCode());
}
TotalResultValue hourOrRateResultValue = loopCount(oldAppSceneCostResultValue, parentMaterialNoMap, totalLabourCost, totalEquipmentCost, totalSupplyMaterialCost, totalDriveCost, totalLogisticsCost, totalOtherCost, totalCost);
TotalResultValue hourOrRateResultValue = loopCount(oldAppSceneCostResultValue, parentMaterialNoMap, totalMaterialCost, totalLabourCost, totalEquipmentCost, totalSupplyMaterialCost, totalDriveCost, totalLogisticsCost, totalOtherCost, totalCost);
costDetailJson.put(TotalCostEnum.TotalMaterialCost.getCode(), hourOrRateResultValue.getTotalMaterialCost());
costDetailJson.put(TotalCostEnum.TotalLaborCost.getCode(), hourOrRateResultValue.getTotalLabourCost());
costDetailJson.put(TotalCostEnum.TotalEquipmentFee.getCode(), hourOrRateResultValue.getTotalEquipmentCost());
costDetailJson.put(TotalCostEnum.TotalSupplyMaterialFee.getCode(), hourOrRateResultValue.getTotalSupplyMaterialCost());
@@ -677,7 +671,7 @@ public class StandardCostService {
* @param appSceneCostResultValue
* @param parentMaterialNoMap
*/
private static TotalResultValue loopCount(AppSceneCostResultValue appSceneCostResultValue, Map<String, List<AppSceneCostResultValue>> parentMaterialNoMap, BigDecimal totalLabourCost, BigDecimal totalEquipmentCost, BigDecimal totalSupplyMaterialCost, BigDecimal totalDriveCost, BigDecimal totalLogisticsCost, BigDecimal totalOtherCost, BigDecimal totalCost) {
private static TotalResultValue loopCount(AppSceneCostResultValue appSceneCostResultValue, Map<String, List<AppSceneCostResultValue>> parentMaterialNoMap, BigDecimal totalMaterialCost, BigDecimal totalLabourCost, BigDecimal totalEquipmentCost, BigDecimal totalSupplyMaterialCost, BigDecimal totalDriveCost, BigDecimal totalLogisticsCost, BigDecimal totalOtherCost, BigDecimal totalCost) {
String marterialNo = appSceneCostResultValue.getMarterialNo();
if (parentMaterialNoMap.containsKey(marterialNo)) {
//获取当前节点的子节点并遍历
@@ -693,6 +687,7 @@ public class StandardCostService {
if (appSceneCostResultValue1.getCostDetail() != null) {
JSONObject costDetailJson = JSON.parseObject(appSceneCostResultValue1.getCostDetail());
if (costDetailJson != null) {
totalMaterialCost = totalMaterialCost.add(costDetailJson.getBigDecimal(FeeTypeEnum.MaterialCost.getCode()));
totalLabourCost = totalLabourCost.add(costDetailJson.getBigDecimal(FeeTypeEnum.LaborCost.getCode()));
totalEquipmentCost = totalEquipmentCost.add(costDetailJson.getBigDecimal(FeeTypeEnum.EquipmentFee.getCode()));
totalSupplyMaterialCost = totalSupplyMaterialCost.add(costDetailJson.getBigDecimal(FeeTypeEnum.SupplyMaterialFee.getCode()));
@@ -704,11 +699,11 @@ public class StandardCostService {
//判断当前子节点是否还有子节点
if (parentMaterialNoMap.containsKey(appSceneCostResultValue1.getMarterialNo())) {
//如果还有子节点则继续递归
loopCount(appSceneCostResultValue1, parentMaterialNoMap, totalLabourCost, totalEquipmentCost, totalSupplyMaterialCost, totalDriveCost, totalLogisticsCost, totalOtherCost, totalCost);
loopCount(appSceneCostResultValue1, parentMaterialNoMap, totalMaterialCost, totalLabourCost, totalEquipmentCost, totalSupplyMaterialCost, totalDriveCost, totalLogisticsCost, totalOtherCost, totalCost);
}
}
}
TotalResultValue hourOrRateResultValue = TotalResultValue.builder().totalLabourCost(totalLabourCost).totalEquipmentCost(totalEquipmentCost).totalSupplyMaterialCost(totalSupplyMaterialCost).totalDriveCost(totalDriveCost).totalLogisticsCost(totalLogisticsCost).totalOtherCost(totalOtherCost).totalCost(totalCost).build();
TotalResultValue hourOrRateResultValue = TotalResultValue.builder().totalMaterialCost(totalMaterialCost).totalLabourCost(totalLabourCost).totalEquipmentCost(totalEquipmentCost).totalSupplyMaterialCost(totalSupplyMaterialCost).totalDriveCost(totalDriveCost).totalLogisticsCost(totalLogisticsCost).totalOtherCost(totalOtherCost).totalCost(totalCost).build();
appSceneCostResultValue.setTotalValue(totalCost.toString());
return hourOrRateResultValue;
}
@@ -2,7 +2,8 @@ package com.zzsmart.qomo.kn.cost.manage.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zzsmart.qomo.kn.cost.manage.mapper.CostStandardDetailMapper;
import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardDetail;
import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostStandardDetailMapper;
import com.zzsmart.qomo.kn.cost.manage.service.BomTreeService;
import com.zzsmart.qomo.kn.cost.manage.util.BomTreeBuilder;
import com.zzsmart.qomo.kn.cost.manage.vo.BomTreeInfoVO;
@@ -21,7 +22,7 @@ import java.util.stream.Collectors;
@Transactional
public class BomTreeServiceImpl implements BomTreeService {
@Autowired
CostStandardDetailMapper costStandardDetailMapper;
AppSceneCostStandardDetailMapper costStandardDetailMapper;
/**
* 根据物料号查询物料树
@@ -31,35 +32,35 @@ public class BomTreeServiceImpl implements BomTreeService {
*/
@Override
public List<BomTreeInfoVO> getBomTreeByMaterialNumber(String materialNumber, String version_number) {
QueryWrapper<CostStandardDetailVO> wrapper = new QueryWrapper<>();
QueryWrapper<AppSceneCostStandardDetail> wrapper = new QueryWrapper<>();
//设置条件
if (StrUtil.isNotEmpty(materialNumber)) {
// 物料号
wrapper.like("c1.material_number", materialNumber);
wrapper.like("material_number", materialNumber);
}
if (StrUtil.isNotEmpty(version_number)) {
// 版本号
wrapper.like("c2.version_number", version_number);
wrapper.like("version_number", version_number);
}
//查询所有满足条件的父节点
List<CostStandardDetailVO> parentNodeList = costStandardDetailMapper.queryListResult(wrapper);
List<AppSceneCostStandardDetail> parentNodeList = costStandardDetailMapper.selectList(wrapper);
//所有子类节点
List<CostStandardDetailVO> childrenNodeList = new ArrayList<>();
Map<String, CostStandardDetailVO> parentDataMap = new TreeMap<>();
List<AppSceneCostStandardDetail> childrenNodeList = new ArrayList<>();
Map<String, AppSceneCostStandardDetail> parentDataMap = new TreeMap<>();
if (parentNodeList.size() > 0) {
//父类结果只有1个
if (parentNodeList.size() == 1) {
parentDataMap = parentNodeList.stream().collect(Collectors.toMap(CostStandardDetailVO::getMaterialNumber, vo -> vo));
parentDataMap = parentNodeList.stream().collect(Collectors.toMap(AppSceneCostStandardDetail::getMaterialNumber, vo -> vo));
} else {
//父类结果有多个(找出最上级节点)
Map<Integer, List<CostStandardDetailVO>> levelGroupMap = parentNodeList.stream().collect(Collectors.groupingBy(CostStandardDetailVO::getLevel));
TreeMap<Integer, List<CostStandardDetailVO>> levelTreeMap = new TreeMap<>(levelGroupMap);
parentDataMap = levelTreeMap.firstEntry().getValue().stream().collect(Collectors.toMap(CostStandardDetailVO::getMaterialNumber, vo -> vo));
Map<Integer, List<AppSceneCostStandardDetail>> levelGroupMap = parentNodeList.stream().collect(Collectors.groupingBy(AppSceneCostStandardDetail::getLevel));
TreeMap<Integer, List<AppSceneCostStandardDetail>> levelTreeMap = new TreeMap<>(levelGroupMap);
parentDataMap = levelTreeMap.firstEntry().getValue().stream().collect(Collectors.toMap(AppSceneCostStandardDetail::getMaterialNumber, vo -> vo));
}
//查询所有父节点下的子节点(即第二层叶子节点)
List<CostStandardDetail> costStandardDetails = new ArrayList<>();
List<AppSceneCostStandardDetail> costStandardDetails = new ArrayList<>();
if (parentDataMap.size() > 0) {
QueryWrapper<CostStandardDetail> wrapper1 = new QueryWrapper<>();
QueryWrapper<AppSceneCostStandardDetail> wrapper1 = new QueryWrapper<>();
int num = 0;
for (String materialNumber1 : parentDataMap.keySet()) {
num = num + 1;
@@ -72,26 +73,28 @@ public class BomTreeServiceImpl implements BomTreeService {
costStandardDetails = costStandardDetailMapper.selectList(wrapper1);
}
//第三层叶子节点
List<CostStandardDetail> threeNodes = new ArrayList<>();
List<AppSceneCostStandardDetail> threeNodes = new ArrayList<>();
if (costStandardDetails != null && costStandardDetails.size() > 0) {
List<String> materialNoList = costStandardDetails.stream().map(CostStandardDetail::getMaterialNumber).collect(Collectors.toList());
QueryWrapper<CostStandardDetail> wrapper2 = new QueryWrapper<>();
List<String> materialNoList = costStandardDetails.stream().map(AppSceneCostStandardDetail::getMaterialNumber).collect(Collectors.toList());
QueryWrapper<AppSceneCostStandardDetail> wrapper2 = new QueryWrapper<>();
wrapper2.in("parent_material_number", materialNoList);
threeNodes = costStandardDetailMapper.selectList(wrapper2);
}
//把第二层叶子节点转化为bomtreeinfoVO对象集合
for (int i = 0; i < costStandardDetails.size(); i++) {
CostStandardDetail costStandardDetail = costStandardDetails.get(i);
CostStandardDetailVO vo = new CostStandardDetailVO();
BeanUtils.copyProperties(costStandardDetail, vo);
childrenNodeList.add(vo);
AppSceneCostStandardDetail costStandardDetail = costStandardDetails.get(i);
// AppSceneCostStandardDetail vo = new AppSceneCostStandardDetail();
// BeanUtils.copyProperties(costStandardDetail, vo);
// childrenNodeList.add(vo);
childrenNodeList.add(costStandardDetail);
}
//把第三层叶子节点转化为bomtreeinfoVO对象集合
for (int i = 0; i < threeNodes.size(); i++) {
CostStandardDetail costStandardDetail = threeNodes.get(i);
CostStandardDetailVO vo = new CostStandardDetailVO();
BeanUtils.copyProperties(costStandardDetail, vo);
childrenNodeList.add(vo);
AppSceneCostStandardDetail costStandardDetail = threeNodes.get(i);
// CostStandardDetailVO vo = new CostStandardDetailVO();
// BeanUtils.copyProperties(costStandardDetail, vo);
// childrenNodeList.add(vo);
childrenNodeList.add(costStandardDetail);
}
}
List<BomTreeInfoVO> bomTreeInfoVOS = BomTreeBuilder.buildBomTree(childrenNodeList, parentDataMap);
@@ -1,5 +1,6 @@
package com.zzsmart.qomo.kn.cost.manage.util;
import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardDetail;
import com.zzsmart.qomo.kn.cost.manage.vo.BomTreeInfoVO;
import java.util.ArrayList;
@@ -9,32 +10,32 @@ import java.util.Map;
import java.util.stream.Collectors;
public class BomTreeBuilder {
public static List<BomTreeInfoVO> buildBomTree(List<CostStandardDetailVO> sourceData, Map<String, CostStandardDetailVO> parentDataMap) {
public static List<BomTreeInfoVO> buildBomTree(List<AppSceneCostStandardDetail> sourceData, Map<String, AppSceneCostStandardDetail> parentDataMap) {
List<BomTreeInfoVO> result = new ArrayList<>();
if ((sourceData == null || (sourceData != null && sourceData.size() < 1)) && (parentDataMap == null || (parentDataMap != null && parentDataMap.size() < 1))) {
return result;
}
//1.把BOM信息分成按照物料号分组
Map<String, CostStandardDetailVO> materialMap = sourceData.stream().filter(s -> s.getMaterialNumber() != null).collect(Collectors.toMap(CostStandardDetailVO::getMaterialNumber, vo -> vo));
Map<String, AppSceneCostStandardDetail> materialMap = sourceData.stream().filter(s -> s.getMaterialNumber() != null).collect(Collectors.toMap(AppSceneCostStandardDetail::getMaterialNumber, vo -> vo));
//查找最顶端的父类节点
if (parentDataMap == null || (parentDataMap != null && parentDataMap.size() < 1)) {
parentDataMap = sourceData.stream().filter(s -> s.getParentMaterialNumber() == null).collect(Collectors.toMap(CostStandardDetailVO::getMaterialNumber, vo -> vo));
parentDataMap = sourceData.stream().filter(s -> s.getParentMaterialNumber() == null).collect(Collectors.toMap(AppSceneCostStandardDetail::getMaterialNumber, vo -> vo));
}
//查找有父节点的子节点
Map<String, List<CostStandardDetailVO>> childDataMap = sourceData.stream().filter(s -> s.getParentMaterialNumber() != null).collect(Collectors.groupingBy(CostStandardDetailVO::getParentMaterialNumber));
Map<String, List<AppSceneCostStandardDetail>> childDataMap = sourceData.stream().filter(s -> s.getParentMaterialNumber() != null).collect(Collectors.groupingBy(AppSceneCostStandardDetail::getParentMaterialNumber));
//查找有父节点的子节点
// //1.把BOM信息分成按照层级分组
// Map<Integer, List<CostStandardDetailVO>> levelMap = sourceData.stream().filter(s -> s.getLevel() != null).collect(Collectors.groupingBy(CostStandardDetail::getLevel));
// Map<Integer, List<AppSceneCostStandardDetail>> levelMap = sourceData.stream().filter(s -> s.getLevel() != null).collect(Collectors.groupingBy(CostStandardDetail::getLevel));
// //2.对每层进行排序
// for (Integer level : levelMap.keySet()) {
// List<CostStandardDetailVO> levelList = levelMap.get(level);
// List<CostStandardDetailVO> sortedCostDetails = levelList.stream().sorted(Comparator.comparing(CostStandardDetailVO::getSort)).collect(Collectors.toList());
// List<AppSceneCostStandardDetail> levelList = levelMap.get(level);
// List<AppSceneCostStandardDetail> sortedCostDetails = levelList.stream().sorted(Comparator.comparing(AppSceneCostStandardDetail::getSort)).collect(Collectors.toList());
// levelMap.put(level, sortedCostDetails);
// }
// TreeMap<Integer, List<CostStandardDetailVO>> levelTreeMap = new TreeMap<>(levelMap);
// TreeMap<Integer, List<AppSceneCostStandardDetail>> levelTreeMap = new TreeMap<>(levelMap);
//3.构建BOM树
if (parentDataMap.size() > 0) {
for (CostStandardDetailVO parent : parentDataMap.values()) {
for (AppSceneCostStandardDetail parent : parentDataMap.values()) {
BomTreeInfoVO parentBomTreeInfoVO = costStandardDetailChangeToBomTreeInfoVO(parent);
parentBomTreeInfoVO = loopFindChildrenBuild(parentBomTreeInfoVO, materialMap, childDataMap, result);
if (parentBomTreeInfoVO != null) {
@@ -48,10 +49,10 @@ public class BomTreeBuilder {
return result;
}
private static BomTreeInfoVO loopFindChildrenBuild(BomTreeInfoVO parentBomTreeInfoVO, Map<String, CostStandardDetailVO> materialMap, Map<String, List<CostStandardDetailVO>> childDataMap, List<BomTreeInfoVO> result) {
private static BomTreeInfoVO loopFindChildrenBuild(BomTreeInfoVO parentBomTreeInfoVO, Map<String, AppSceneCostStandardDetail> materialMap, Map<String, List<AppSceneCostStandardDetail>> childDataMap, List<BomTreeInfoVO> result) {
if (parentBomTreeInfoVO != null) {
//4.根据物料号查找子节点
List<CostStandardDetailVO> childs = childDataMap.get(parentBomTreeInfoVO.getMaterialNumber());
List<AppSceneCostStandardDetail> childs = childDataMap.get(parentBomTreeInfoVO.getMaterialNumber());
if (childs != null && childs.size() > 0) {
parentBomTreeInfoVO.setHasChildren(true);
} else {
@@ -60,7 +61,7 @@ public class BomTreeBuilder {
//构造父节点下的bomtree结构数据
List<BomTreeInfoVO> children = new ArrayList<>();
for (int j = 0; childs != null && childs.size() > 0 && j < childs.size(); j++) {
CostStandardDetailVO child = childs.get(j);
AppSceneCostStandardDetail child = childs.get(j);
BomTreeInfoVO childBomTreeInfoVO = costStandardDetailChangeToBomTreeInfoVO(child);
childBomTreeInfoVO = loopFindChildrenBuild(childBomTreeInfoVO, materialMap, childDataMap, result);
children.add(childBomTreeInfoVO);
@@ -78,8 +79,8 @@ public class BomTreeBuilder {
* @param parent
* @return
*/
static BomTreeInfoVO costStandardDetailChangeToBomTreeInfoVO(CostStandardDetail parent) {
BomTreeInfoVO bomTreeInfoVO = BomTreeInfoVO.builder().materialNumber(parent.getMaterialNumber()).materialName(parent.getMaterialName()).level(parent.getLevel()).parentMaterialNumber(parent.getParentMaterialNumber()).quantity(parent.getDosage()).unit(parent.getUnit()).auxiliaryCost(parent.getAuxiliaryCost()).equipCost(parent.getEquipConsumeCost()).otherCost(parent.getOtherCost()).laborCost(parent.getLaborCost()).accumulatedEquipCost(parent.getTotalEquipConsumeCost()).accumulatedOtherCost(parent.getTotalOtherCost()).accumulatedLaborCost(parent.getTotalLaborCost()).accumulatedMaterialCost(parent.getAuxiliaryCost()).accumulatedFuelCost(parent.getTotalEuipDepreciationCost()).sort(parent.getSort()).build();
static BomTreeInfoVO costStandardDetailChangeToBomTreeInfoVO(AppSceneCostStandardDetail parent) {
BomTreeInfoVO bomTreeInfoVO = BomTreeInfoVO.builder().materialNumber(parent.getMaterialNumber()).materialName(parent.getMaterialName()).level(parent.getLevel()).parentMaterialNumber(parent.getParentMaterialNumber()).quantity(parent.getDosage()).unit(parent.getUnit()).auxiliaryCost(parent.getSupplyMaterialCost()).equipCost(parent.getEquipmentCost()).otherCost(parent.getOtherCost()).laborCost(parent.getLaborCost()).accumulatedEquipCost(parent.getTotalEquipmentCost()).accumulatedOtherCost(parent.getTotalOtherCost()).accumulatedLaborCost(parent.getTotalLaborCost()).accumulatedMaterialCost(parent.getTotalMaterialCost()).accumulatedFuelCost(parent.getTotalDriveCost()).sort(parent.getSort()).build();
return bomTreeInfoVO;
}
}
@@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.metadata.style.WriteFont;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardDetail;
import org.apache.poi.ss.usermodel.*;
import javax.servlet.http.HttpServletResponse;
@@ -124,7 +125,7 @@ public class EasyExcelUtil {
* @return
*/
public static Set<String> getIncludeFields(Class<?> clazz) {
Field[] excelPropertyAnnotatedFields = getExcelPropertyAnnotatedFields(CostStandardDetail.class);
Field[] excelPropertyAnnotatedFields = getExcelPropertyAnnotatedFields(AppSceneCostStandardDetail.class);
Set<String> includeColumnFiledNames = new HashSet<String>();
for (int i = 0; i < excelPropertyAnnotatedFields.length; i++) {
includeColumnFiledNames.add(excelPropertyAnnotatedFields[i].getName());
@@ -19,6 +19,10 @@ import java.math.BigDecimal;
* @Version: 1.0
*/
public class TotalResultValue {
/**
* 总物料成本
*/
private BigDecimal totalMaterialCost;
/**
* 总人工成本
*/