From 9442a3b69dc1e747d874aa33577c848eed3019e8 Mon Sep 17 00:00:00 2001 From: wangqiong <1322446236@qq.com> Date: Thu, 20 Jun 2024 11:03:41 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=A0=87=E5=87=86=E6=88=90=E6=9C=AC?= =?UTF-8?q?=E5=8D=95=E8=A1=8C=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CostStandardDetailController.java | 42 ++++++++++++++++++- .../mapper/CostStandardDetailMapper.java | 8 ++++ .../mapper/xml/CostStandardDetailMapper.xml | 15 ++++--- .../service/CostStandardDetailService.java | 11 +++++ .../impl/CostStandardDetailServiceImpl.java | 35 ++++++++++++++++ .../impl/CostStandardVersionServiceImpl.java | 4 +- .../cost/manage/vo/CostStandardDetailVO.java | 32 ++++++++++++++ 7 files changed, 138 insertions(+), 9 deletions(-) create mode 100644 qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/CostStandardDetailVO.java diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/CostStandardDetailController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/CostStandardDetailController.java index dd2a1e4..af3393b 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/CostStandardDetailController.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/CostStandardDetailController.java @@ -1,10 +1,25 @@ package com.zzsmart.qomo.kn.cost.manage.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zzsmart.qomo.kn.cost.manage.service.CostStandardDetailService; +import com.zzsmart.qomo.kn.cost.manage.service.ICostStandardService; +import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardDetailVO; +import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletRequest; + /** *

* 标准成本明细表 前端控制器 @@ -13,8 +28,33 @@ import org.springframework.web.bind.annotation.RestController; * @author cost_purchase_price * @since 2024-06-19 */ +@Api(tags="标准成本单行查询") @RestController -@RequestMapping("/cost-standard-detail") +@RequestMapping("//costStandardDetail") +@Slf4j public class CostStandardDetailController { + @Autowired + private CostStandardDetailService costStandardDetailService; + /** + * 分页列表查询 + * + * @param costStandard + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "cost_standard-分页列表查询") + @ApiOperation(value="cost_standard_detail-分页列表查询", notes="cost_standard_detail-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(CostStandardDetailVO costStandard, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + Page page = new Page(pageNo, pageSize); + IPage pageList = costStandardDetailService.pageList(page, costStandard); + return Result.OK(pageList); + } } diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/CostStandardDetailMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/CostStandardDetailMapper.java index 76f2a2b..ec9a168 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/CostStandardDetailMapper.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/CostStandardDetailMapper.java @@ -1,8 +1,15 @@ 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.zzsmart.qomo.kn.cost.manage.entity.CostStandardDetail; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardDetailVO; +import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardVO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -14,5 +21,6 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface CostStandardDetailMapper extends BaseMapper { + IPage pageList(@Param("page") Page page , @Param(Constants.WRAPPER) Wrapper wrapper); } diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/CostStandardDetailMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/CostStandardDetailMapper.xml index 17dd931..95faa0f 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/CostStandardDetailMapper.xml +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/CostStandardDetailMapper.xml @@ -3,10 +3,11 @@ - + + @@ -33,10 +34,14 @@ + diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/CostStandardDetailService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/CostStandardDetailService.java index 30a429c..e2ca314 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/CostStandardDetailService.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/CostStandardDetailService.java @@ -1,7 +1,11 @@ package com.zzsmart.qomo.kn.cost.manage.service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zzsmart.qomo.kn.cost.manage.entity.CostStandardDetail; import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardDetailVO; +import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardVO; /** *

@@ -12,5 +16,12 @@ import com.baomidou.mybatisplus.extension.service.IService; * @since 2024-06-19 */ public interface CostStandardDetailService extends IService { + /** + * 分页查询 + * @param page + * @param + * @return + */ + IPage pageList(Page page, CostStandardDetailVO costStandard); } diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/CostStandardDetailServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/CostStandardDetailServiceImpl.java index 4309d4d..f1e3403 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/CostStandardDetailServiceImpl.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/CostStandardDetailServiceImpl.java @@ -1,9 +1,16 @@ 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.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zzsmart.qomo.kn.cost.manage.entity.CostStandardDetail; import com.zzsmart.qomo.kn.cost.manage.mapper.CostStandardDetailMapper; import com.zzsmart.qomo.kn.cost.manage.service.CostStandardDetailService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardDetailVO; +import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardVO; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -17,4 +24,32 @@ import org.springframework.stereotype.Service; @Service public class CostStandardDetailServiceImpl extends ServiceImpl implements CostStandardDetailService { + @Autowired + CostStandardDetailMapper costStandardDetailMapper; + /** + * 分页查询 + * + * @param page + * @param costStandard + * @return + */ + @Override + public IPage pageList(Page page, CostStandardDetailVO costStandard) { + // 查询条件组装 + QueryWrapper queryWrapper = new QueryWrapper(); + + if(costStandard != null){ + + if(StrUtil.isNotEmpty(costStandard.getMaterialNumber()) ){ + // 物料号 + queryWrapper.like("c1.material_number",costStandard.getMaterialNumber()); + } + if(StrUtil.isNotEmpty(costStandard.getVersionNumber()) ){ + // 版本号 + queryWrapper.like("c2.version_number",costStandard.getVersionNumber()); + } + + } + return (IPage) costStandardDetailMapper.pageList(page,queryWrapper); + } } diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/CostStandardVersionServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/CostStandardVersionServiceImpl.java index 4b95836..db76eaa 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/CostStandardVersionServiceImpl.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/CostStandardVersionServiceImpl.java @@ -49,8 +49,6 @@ import java.util.Map; public class CostStandardVersionServiceImpl extends ServiceImpl implements ICostStandardVersionService { @Autowired private CostStandardMapper costStandardMapper; - @Autowired - private ICostStandardVersionService costStandardVersionService; private static final Logger log = LoggerFactory.getLogger(CostStandardVersionServiceImpl.class); @Transactional(rollbackFor = Exception.class) @@ -171,7 +169,7 @@ public class CostStandardVersionServiceImpl extends ServiceImpl + * 标准成本明细表 + *

+ * + * @author cost_purchase_price + * @since 2024-06-19 + */ +@Data +public class CostStandardDetailVO extends CostStandardDetail implements Serializable { + /** + * 版本号 + */ + private String versionNumber; +} From 495f535596646bec9a8c542322ab5abe4073503b Mon Sep 17 00:00:00 2001 From: wangqiong <1322446236@qq.com> Date: Thu, 20 Jun 2024 16:25:02 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A0=87=E5=87=86?= =?UTF-8?q?=E6=88=90=E6=9C=AC=E5=8D=95=E8=A1=8C=E6=9F=A5=E8=AF=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/entity/CostStandardDetail.java | 82 +++++-------------- .../mapper/CostStandardDetailMapper.java | 5 +- .../mapper/xml/CostStandardDetailMapper.xml | 2 + .../cost/manage/vo/CostStandardDetailVO.java | 14 +--- .../qomo/kn/cost/manage/ApplicationTests.java | 12 +-- 5 files changed, 33 insertions(+), 82 deletions(-) diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/entity/CostStandardDetail.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/entity/CostStandardDetail.java index fae984d..11a8ad0 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/entity/CostStandardDetail.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/entity/CostStandardDetail.java @@ -7,6 +7,9 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; @@ -16,11 +19,10 @@ import lombok.experimental.Accessors; * 标准成本明细表 *

* - * @author cost_purchase_price - * @since 2024-06-19 + * @author + * @since 2024-06-20 */ -@Getter -@Setter +@Data @Accessors(chain = true) @TableName("cost_standard_detail") public class CostStandardDetail implements Serializable { @@ -34,11 +36,18 @@ public class CostStandardDetail implements Serializable { private String id; /** - * 子物料号,关联kn_new_sap_mara表matnr字段 + * 物料号,关联kn_new_sap_mara表matnr字段 */ @TableField("material_number") + @ApiModelProperty(value = "物料号,关联kn_new_sap_mara表matnr字段") private String materialNumber; + /** + * 父类物料号 + */ + @TableField("parent_material_number") + private String parentMaterialNumber; + /** * 版本号id */ @@ -49,7 +58,7 @@ public class CostStandardDetail implements Serializable { * 层级 */ @TableField("level") - private String level; + private Integer level; /** * 图号 @@ -195,61 +204,10 @@ public class CostStandardDetail implements Serializable { @TableField("remark") private String remark; - - public static final String ID = "id"; - - public static final String MATERIAL_NUMBER = "material_number"; - - public static final String VERSION_NUMBER_ID = "version_number_id"; - - public static final String LEVEL = "level"; - - public static final String FIGURE_NUMBER = "figure_number"; - - public static final String DOSAGE = "dosage"; - - public static final String UNIT = "unit"; - - public static final String SPECIFICATION = "specification"; - - public static final String BOM_COST = "bom_cost"; - - public static final String PACKING_COST = "packing_cost"; - - public static final String AUXILIARY_COST = "auxiliary_cost"; - - public static final String LABOR_COST = "labor_cost"; - - public static final String EUIP_DEPRECIATION_COST = "euip_depreciation_cost"; - - public static final String EQUIP_CONSUME_COST = "equip_consume_cost"; - - public static final String HYDROELECTRICITY_COST = "hydroelectricity_cost"; - - public static final String OTHER_COST = "other_cost"; - - public static final String TRAIL_COST = "trail_cost"; - - public static final String MANUFACTURE_COST = "manufacture_cost"; - - public static final String TOTAL_LABOR_COST = "total_labor_cost"; - - public static final String TOTAL_EQUIP_CONSUME_COST = "total_equip_consume_cost"; - - public static final String TOTAL_EUIP_DEPRECIATION_COST = "total_euip_depreciation_cost"; - - public static final String TOTAL_HYDROELECTRICITY_COST = "total_hydroelectricity_cost"; - - public static final String TOTAL_OTHER_COST = "total_other_cost"; - - public static final String CREATE_BY = "create_by"; - - public static final String CREATE_TIME = "create_time"; - - public static final String UPDATE_BY = "update_by"; - - public static final String UPDATE_TIME = "update_time"; - - public static final String REMARK = "remark"; + /** + * 序号 + */ + @TableField("sort") + private Integer sort; } diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/CostStandardDetailMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/CostStandardDetailMapper.java index ec9a168..916aead 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/CostStandardDetailMapper.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/CostStandardDetailMapper.java @@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zzsmart.qomo.kn.cost.manage.entity.CostStandardDetail; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardDetailVO; -import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -16,8 +15,8 @@ import org.apache.ibatis.annotations.Param; * 标准成本明细表 Mapper 接口 *

* - * @author cost_purchase_price - * @since 2024-06-19 + * @author + * @since 2024-06-20 */ @Mapper public interface CostStandardDetailMapper extends BaseMapper { diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/CostStandardDetailMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/CostStandardDetailMapper.xml index 95faa0f..3037f7e 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/CostStandardDetailMapper.xml +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/CostStandardDetailMapper.xml @@ -6,6 +6,7 @@ + @@ -33,6 +34,7 @@ + + diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/BomTreeService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/BomTreeService.java new file mode 100644 index 0000000..61766c7 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/BomTreeService.java @@ -0,0 +1,14 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + +import com.zzsmart.qomo.kn.cost.manage.vo.BomTreeInfoVO; + +import java.util.List; + +public interface BomTreeService { + /** + * 根据物料号查询物料树 + * @param materialNumber + * @return + */ + List getBomTreeByMaterialNumber(String materialNumber, String version_number); +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/BomTreeServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/BomTreeServiceImpl.java new file mode 100644 index 0000000..154fc96 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/BomTreeServiceImpl.java @@ -0,0 +1,44 @@ +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.entity.CostStandardDetail; +import com.zzsmart.qomo.kn.cost.manage.mapper.CostStandardDetailMapper; +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; +import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardDetailVO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +@Service +public class BomTreeServiceImpl implements BomTreeService { + @Autowired + CostStandardDetailMapper costStandardDetailMapper; + + /** + * 根据物料号查询物料树 + * + * @param materialNumber + * @return + */ + @Override + public List getBomTreeByMaterialNumber(String materialNumber, String version_number) { + QueryWrapper wrapper = new QueryWrapper<>(); + //设置条件 + if (StrUtil.isNotEmpty(materialNumber)) { + // 物料号 + wrapper.like("c1.material_number", materialNumber); + } + if (StrUtil.isNotEmpty(version_number)) { + // 版本号 + wrapper.like("c2.version_number", version_number); + } + List costStandardDetailVOS = costStandardDetailMapper.queryListResult(wrapper); + List bomTreeInfoVOS = BomTreeBuilder.buildBomTree(costStandardDetailVOS); + return bomTreeInfoVOS; + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/util/BomTreeBuilder.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/util/BomTreeBuilder.java new file mode 100644 index 0000000..327111f --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/util/BomTreeBuilder.java @@ -0,0 +1,80 @@ +package com.zzsmart.qomo.kn.cost.manage.util; + +import com.zzsmart.qomo.kn.cost.manage.entity.CostStandardDetail; +import com.zzsmart.qomo.kn.cost.manage.vo.BomTreeInfoVO; +import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardDetailVO; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class BomTreeBuilder { + public static List buildBomTree(List sourceData) { + List result = new ArrayList<>(); + if (sourceData == null || (sourceData != null && sourceData.size() < 1)) { + return result; + } + //1.把BOM信息分成按照物料号分组 + Map materialMap = sourceData.stream().filter(s -> s.getMaterialNumber() != null).collect(Collectors.toMap(CostStandardDetailVO::getMaterialNumber, vo -> vo)); + //查找最顶端的父类节点 + Map parentDataMap = sourceData.stream().filter(s -> s.getParentMaterialNumber() == null).collect(Collectors.toMap(CostStandardDetailVO::getMaterialNumber, vo -> vo)); + //查找有父节点的子节点 + Map> childDataMap = sourceData.stream().filter(s -> s.getParentMaterialNumber() != null).collect(Collectors.groupingBy(CostStandardDetailVO::getParentMaterialNumber)); + //查找有父节点的子节点 +// //1.把BOM信息分成按照层级分组 +// Map> levelMap = sourceData.stream().filter(s -> s.getLevel() != null).collect(Collectors.groupingBy(CostStandardDetail::getLevel)); +// //2.对每层进行排序 +// for (Integer level : levelMap.keySet()) { +// List levelList = levelMap.get(level); +// List sortedCostDetails = levelList.stream().sorted(Comparator.comparing(CostStandardDetailVO::getSort)).collect(Collectors.toList()); +// levelMap.put(level, sortedCostDetails); +// } +// TreeMap> levelTreeMap = new TreeMap<>(levelMap); + //3.构建BOM树 + if (parentDataMap.size() > 0) { + for (CostStandardDetailVO parent : parentDataMap.values()) { + BomTreeInfoVO parentBomTreeInfoVO = costStandardDetailChangeToBomTreeInfoVO(parent); + parentBomTreeInfoVO = loopFindChildrenBuild(parentBomTreeInfoVO, materialMap, childDataMap, result); + if (parentBomTreeInfoVO != null) { + result.add(parentBomTreeInfoVO); + } + } + } + materialMap = null; + parentDataMap = null; + childDataMap = null; + return result; + } + + private static BomTreeInfoVO loopFindChildrenBuild(BomTreeInfoVO parentBomTreeInfoVO, Map materialMap, Map> childDataMap, List result) { + if (parentBomTreeInfoVO != null) { + //4.根据物料号查找子节点 + List childs = childDataMap.get(parentBomTreeInfoVO.getMaterialNumber()); + //构造父节点下的bomtree结构数据 + List children = new ArrayList<>(); + for (int j = 0; childs != null && childs.size() > 0 && j < childs.size(); j++) { + CostStandardDetailVO child = childs.get(j); + BomTreeInfoVO childBomTreeInfoVO = costStandardDetailChangeToBomTreeInfoVO(child); + childBomTreeInfoVO = loopFindChildrenBuild(childBomTreeInfoVO, materialMap, childDataMap, result); + children.add(childBomTreeInfoVO); + } + //对象的子节点进行排序(升序) + children = children.stream().sorted(Comparator.comparing(BomTreeInfoVO::getSort, Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList()); + parentBomTreeInfoVO.setChildren(children); + } + return parentBomTreeInfoVO; + } + + /** + * 把单行查询的数据转换为BomTreeInfoVO + * + * @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(); + return bomTreeInfoVO; + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/BomTreeInfoVO.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/BomTreeInfoVO.java new file mode 100644 index 0000000..85d6165 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/BomTreeInfoVO.java @@ -0,0 +1,105 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +import lombok.Builder; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@Builder +public class BomTreeInfoVO { + /** + * 物料号 + */ + private String materialNumber; + /** + * 父类物料号 + */ + private String parentMaterialNumber; + /** + * 物料名称 + */ + private String materialName; + /** + * 数量 + */ + private double quantity; + /** + * 单位 + */ + private String unit; + /** + * 层级 + */ + private Integer level; + /** + * 序号 + */ + private Integer sort; + /** + * 本阶标准成本 + */ + private BigDecimal standardCost; + /** + * 本阶物料成本 + */ + private BigDecimal materialCost; + /** + * 本阶人工成本 + */ + private BigDecimal laborCost; + /** + * 本阶设备成本 + */ + private BigDecimal equipCost; + /** + * 本阶燃动成本 + */ + private BigDecimal fuelCost; + /** + * 本阶辅料成本 + */ + private BigDecimal auxiliaryCost; + /** + * 本阶其他成本 + */ + private BigDecimal otherCost; + /** + * 累计标准成本 + */ + private BigDecimal accumulatedStandardCost; + /** + * 累计物料成本 + */ + private BigDecimal accumulatedMaterialCost; + /** + * 累计人工成本 + */ + private BigDecimal accumulatedLaborCost; + /** + * 累计设备成本 + */ + private BigDecimal accumulatedEquipCost; + /** + * 累计燃动成本 + */ + private BigDecimal accumulatedFuelCost; + + /** + * 累计辅料成本 + */ + private BigDecimal accumulatedAuxiliaryCost; + /** + * 累计其他成本 + */ + private BigDecimal accumulatedOtherCost; + /** + * 节点父类所有的物料编码 + */ + private List parentMaterialNumbers; + /** + * 子节点 + */ + private List children; +}