|
|
@@ -2,7 +2,8 @@ package com.zzsmart.qomo.kn.cost.manage.service.impl;
|
|
2
|
2
|
|
|
3
|
3
|
import cn.hutool.core.util.StrUtil;
|
|
4
|
4
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
5
|
|
-import com.zzsmart.qomo.kn.cost.manage.mapper.CostStandardDetailMapper;
|
|
|
5
|
+import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardDetail;
|
|
|
6
|
+import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostStandardDetailMapper;
|
|
6
|
7
|
import com.zzsmart.qomo.kn.cost.manage.service.BomTreeService;
|
|
7
|
8
|
import com.zzsmart.qomo.kn.cost.manage.util.BomTreeBuilder;
|
|
8
|
9
|
import com.zzsmart.qomo.kn.cost.manage.vo.BomTreeInfoVO;
|
|
|
@@ -21,7 +22,7 @@ import java.util.stream.Collectors;
|
|
21
|
22
|
@Transactional
|
|
22
|
23
|
public class BomTreeServiceImpl implements BomTreeService {
|
|
23
|
24
|
@Autowired
|
|
24
|
|
- CostStandardDetailMapper costStandardDetailMapper;
|
|
|
25
|
+ AppSceneCostStandardDetailMapper costStandardDetailMapper;
|
|
25
|
26
|
|
|
26
|
27
|
/**
|
|
27
|
28
|
* 根据物料号查询物料树
|
|
|
@@ -31,35 +32,35 @@ public class BomTreeServiceImpl implements BomTreeService {
|
|
31
|
32
|
*/
|
|
32
|
33
|
@Override
|
|
33
|
34
|
public List<BomTreeInfoVO> getBomTreeByMaterialNumber(String materialNumber, String version_number) {
|
|
34
|
|
- QueryWrapper<CostStandardDetailVO> wrapper = new QueryWrapper<>();
|
|
|
35
|
+ QueryWrapper<AppSceneCostStandardDetail> wrapper = new QueryWrapper<>();
|
|
35
|
36
|
//设置条件
|
|
36
|
37
|
if (StrUtil.isNotEmpty(materialNumber)) {
|
|
37
|
38
|
// 物料号
|
|
38
|
|
- wrapper.like("c1.material_number", materialNumber);
|
|
|
39
|
+ wrapper.like("material_number", materialNumber);
|
|
39
|
40
|
}
|
|
40
|
41
|
if (StrUtil.isNotEmpty(version_number)) {
|
|
41
|
42
|
// 版本号
|
|
42
|
|
- wrapper.like("c2.version_number", version_number);
|
|
|
43
|
+ wrapper.like("version_number", version_number);
|
|
43
|
44
|
}
|
|
44
|
45
|
//查询所有满足条件的父节点
|
|
45
|
|
- List<CostStandardDetailVO> parentNodeList = costStandardDetailMapper.queryListResult(wrapper);
|
|
|
46
|
+ List<AppSceneCostStandardDetail> parentNodeList = costStandardDetailMapper.selectList(wrapper);
|
|
46
|
47
|
//所有子类节点
|
|
47
|
|
- List<CostStandardDetailVO> childrenNodeList = new ArrayList<>();
|
|
48
|
|
- Map<String, CostStandardDetailVO> parentDataMap = new TreeMap<>();
|
|
|
48
|
+ List<AppSceneCostStandardDetail> childrenNodeList = new ArrayList<>();
|
|
|
49
|
+ Map<String, AppSceneCostStandardDetail> parentDataMap = new TreeMap<>();
|
|
49
|
50
|
if (parentNodeList.size() > 0) {
|
|
50
|
51
|
//父类结果只有1个
|
|
51
|
52
|
if (parentNodeList.size() == 1) {
|
|
52
|
|
- parentDataMap = parentNodeList.stream().collect(Collectors.toMap(CostStandardDetailVO::getMaterialNumber, vo -> vo));
|
|
|
53
|
+ parentDataMap = parentNodeList.stream().collect(Collectors.toMap(AppSceneCostStandardDetail::getMaterialNumber, vo -> vo));
|
|
53
|
54
|
} else {
|
|
54
|
55
|
//父类结果有多个(找出最上级节点)
|
|
55
|
|
- Map<Integer, List<CostStandardDetailVO>> levelGroupMap = parentNodeList.stream().collect(Collectors.groupingBy(CostStandardDetailVO::getLevel));
|
|
56
|
|
- TreeMap<Integer, List<CostStandardDetailVO>> levelTreeMap = new TreeMap<>(levelGroupMap);
|
|
57
|
|
- parentDataMap = levelTreeMap.firstEntry().getValue().stream().collect(Collectors.toMap(CostStandardDetailVO::getMaterialNumber, vo -> vo));
|
|
|
56
|
+ Map<Integer, List<AppSceneCostStandardDetail>> levelGroupMap = parentNodeList.stream().collect(Collectors.groupingBy(AppSceneCostStandardDetail::getLevel));
|
|
|
57
|
+ TreeMap<Integer, List<AppSceneCostStandardDetail>> levelTreeMap = new TreeMap<>(levelGroupMap);
|
|
|
58
|
+ parentDataMap = levelTreeMap.firstEntry().getValue().stream().collect(Collectors.toMap(AppSceneCostStandardDetail::getMaterialNumber, vo -> vo));
|
|
58
|
59
|
}
|
|
59
|
60
|
//查询所有父节点下的子节点(即第二层叶子节点)
|
|
60
|
|
- List<CostStandardDetail> costStandardDetails = new ArrayList<>();
|
|
|
61
|
+ List<AppSceneCostStandardDetail> costStandardDetails = new ArrayList<>();
|
|
61
|
62
|
if (parentDataMap.size() > 0) {
|
|
62
|
|
- QueryWrapper<CostStandardDetail> wrapper1 = new QueryWrapper<>();
|
|
|
63
|
+ QueryWrapper<AppSceneCostStandardDetail> wrapper1 = new QueryWrapper<>();
|
|
63
|
64
|
int num = 0;
|
|
64
|
65
|
for (String materialNumber1 : parentDataMap.keySet()) {
|
|
65
|
66
|
num = num + 1;
|
|
|
@@ -72,26 +73,28 @@ public class BomTreeServiceImpl implements BomTreeService {
|
|
72
|
73
|
costStandardDetails = costStandardDetailMapper.selectList(wrapper1);
|
|
73
|
74
|
}
|
|
74
|
75
|
//第三层叶子节点
|
|
75
|
|
- List<CostStandardDetail> threeNodes = new ArrayList<>();
|
|
|
76
|
+ List<AppSceneCostStandardDetail> threeNodes = new ArrayList<>();
|
|
76
|
77
|
if (costStandardDetails != null && costStandardDetails.size() > 0) {
|
|
77
|
|
- List<String> materialNoList = costStandardDetails.stream().map(CostStandardDetail::getMaterialNumber).collect(Collectors.toList());
|
|
78
|
|
- QueryWrapper<CostStandardDetail> wrapper2 = new QueryWrapper<>();
|
|
|
78
|
+ List<String> materialNoList = costStandardDetails.stream().map(AppSceneCostStandardDetail::getMaterialNumber).collect(Collectors.toList());
|
|
|
79
|
+ QueryWrapper<AppSceneCostStandardDetail> wrapper2 = new QueryWrapper<>();
|
|
79
|
80
|
wrapper2.in("parent_material_number", materialNoList);
|
|
80
|
81
|
threeNodes = costStandardDetailMapper.selectList(wrapper2);
|
|
81
|
82
|
}
|
|
82
|
83
|
//把第二层叶子节点转化为bomtreeinfoVO对象集合
|
|
83
|
84
|
for (int i = 0; i < costStandardDetails.size(); i++) {
|
|
84
|
|
- CostStandardDetail costStandardDetail = costStandardDetails.get(i);
|
|
85
|
|
- CostStandardDetailVO vo = new CostStandardDetailVO();
|
|
86
|
|
- BeanUtils.copyProperties(costStandardDetail, vo);
|
|
87
|
|
- childrenNodeList.add(vo);
|
|
|
85
|
+ AppSceneCostStandardDetail costStandardDetail = costStandardDetails.get(i);
|
|
|
86
|
+// AppSceneCostStandardDetail vo = new AppSceneCostStandardDetail();
|
|
|
87
|
+// BeanUtils.copyProperties(costStandardDetail, vo);
|
|
|
88
|
+// childrenNodeList.add(vo);
|
|
|
89
|
+ childrenNodeList.add(costStandardDetail);
|
|
88
|
90
|
}
|
|
89
|
91
|
//把第三层叶子节点转化为bomtreeinfoVO对象集合
|
|
90
|
92
|
for (int i = 0; i < threeNodes.size(); i++) {
|
|
91
|
|
- CostStandardDetail costStandardDetail = threeNodes.get(i);
|
|
92
|
|
- CostStandardDetailVO vo = new CostStandardDetailVO();
|
|
93
|
|
- BeanUtils.copyProperties(costStandardDetail, vo);
|
|
94
|
|
- childrenNodeList.add(vo);
|
|
|
93
|
+ AppSceneCostStandardDetail costStandardDetail = threeNodes.get(i);
|
|
|
94
|
+// CostStandardDetailVO vo = new CostStandardDetailVO();
|
|
|
95
|
+// BeanUtils.copyProperties(costStandardDetail, vo);
|
|
|
96
|
+// childrenNodeList.add(vo);
|
|
|
97
|
+ childrenNodeList.add(costStandardDetail);
|
|
95
|
98
|
}
|
|
96
|
99
|
}
|
|
97
|
100
|
List<BomTreeInfoVO> bomTreeInfoVOS = BomTreeBuilder.buildBomTree(childrenNodeList, parentDataMap);
|