Commit 9eeb9d1e23fd18158b9947e3a0b7cea8e8dd648f
1 parent
070465c7
feat: 问题修复项
1、设计师权重导出 2、订单列表多选
Showing
4 changed files
with
101 additions
and
44 deletions
src/main/java/com/order/erp/domain/vo/OrderReportStatExportVo.java
0 → 100644
1 | +package com.order.erp.domain.vo; | |
2 | + | |
3 | +import com.order.erp.common.excel4j.annotation.ExcelField; | |
4 | +import lombok.AllArgsConstructor; | |
5 | +import lombok.Data; | |
6 | +import lombok.NoArgsConstructor; | |
7 | +import lombok.ToString; | |
8 | + | |
9 | +import java.io.Serializable; | |
10 | +import java.math.BigDecimal; | |
11 | + | |
12 | +/** | |
13 | + * @author zhongnanhuang | |
14 | + * @version 1.0 | |
15 | + * @project order-erp | |
16 | + * @description 利润分析传参 | |
17 | + * @date 2023/10/30 10:19:26 | |
18 | + */ | |
19 | +@Data | |
20 | +@AllArgsConstructor | |
21 | +@NoArgsConstructor | |
22 | +@ToString | |
23 | +public class OrderReportStatExportVo implements Serializable { | |
24 | + | |
25 | + /** | |
26 | + * 设计师 | |
27 | + */ | |
28 | + @ExcelField(title = "设计师", order = 1) | |
29 | + private String designer; | |
30 | + | |
31 | + /** | |
32 | + * 想法来源占比 | |
33 | + */ | |
34 | + @ExcelField(title = "想法来源占比", order = 2) | |
35 | + private Double ideaSourceRate; | |
36 | + | |
37 | + /** | |
38 | + * 手工初型1占比 | |
39 | + */ | |
40 | + @ExcelField(title = "手工初型1占比", order = 3) | |
41 | + private Double manualPreform1Rate; | |
42 | + | |
43 | + /** | |
44 | + * 手工初型2占比 | |
45 | + */ | |
46 | + @ExcelField(title = "手工初型2占比", order = 4) | |
47 | + private Double manualPreform2Rate; | |
48 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoQueryVO.java
... | ... | @@ -43,7 +43,7 @@ public class OrderBaseInfoQueryVO extends BasePageVO implements Serializable { |
43 | 43 | /** |
44 | 44 | * 单据状态 |
45 | 45 | */ |
46 | - private String orderStatus; | |
46 | + private List<String> orderStatus; | |
47 | 47 | |
48 | 48 | /** |
49 | 49 | * 提交人名称 |
... | ... | @@ -56,14 +56,14 @@ public class OrderBaseInfoQueryVO extends BasePageVO implements Serializable { |
56 | 56 | private String commitUserPhone; |
57 | 57 | |
58 | 58 | /** |
59 | - * 客户编码 | |
59 | + * 项目号 | |
60 | 60 | */ |
61 | - private String customerCode; | |
61 | + private List<String> projectNo; | |
62 | 62 | |
63 | 63 | /** |
64 | - * 项目号 | |
64 | + * 客户编码集合 | |
65 | 65 | */ |
66 | - private List<String> projectNo; | |
66 | + private List<String> customerCode; | |
67 | 67 | |
68 | 68 | /** |
69 | 69 | * 内部编号 |
... | ... | @@ -73,7 +73,7 @@ public class OrderBaseInfoQueryVO extends BasePageVO implements Serializable { |
73 | 73 | /** |
74 | 74 | * 生产科 |
75 | 75 | */ |
76 | - private String productionDepartment; | |
76 | + private List<String> productionDepartment; | |
77 | 77 | |
78 | 78 | /** |
79 | 79 | * 生成科拖货开始时间 |
... | ... | @@ -108,7 +108,7 @@ public class OrderBaseInfoQueryVO extends BasePageVO implements Serializable { |
108 | 108 | /** |
109 | 109 | * 想法来源 |
110 | 110 | */ |
111 | - private String ideaSource; | |
111 | + private List<String> ideaSource; | |
112 | 112 | |
113 | 113 | /** |
114 | 114 | * 想法来源占比 |
... | ... | @@ -123,7 +123,7 @@ public class OrderBaseInfoQueryVO extends BasePageVO implements Serializable { |
123 | 123 | /** |
124 | 124 | * 手工初型1 |
125 | 125 | */ |
126 | - private String manualPreform1; | |
126 | + private List<String> manualPreform1; | |
127 | 127 | |
128 | 128 | /** |
129 | 129 | * 手工初型1占比 |
... | ... | @@ -133,7 +133,7 @@ public class OrderBaseInfoQueryVO extends BasePageVO implements Serializable { |
133 | 133 | /** |
134 | 134 | * 手工初型2 |
135 | 135 | */ |
136 | - private String manualPreform2; | |
136 | + private List<String> manualPreform2; | |
137 | 137 | |
138 | 138 | /** |
139 | 139 | * 手工初型2占比 |
... | ... | @@ -143,7 +143,7 @@ public class OrderBaseInfoQueryVO extends BasePageVO implements Serializable { |
143 | 143 | /** |
144 | 144 | * pp样品确认意见 |
145 | 145 | */ |
146 | - private String ppConfirmResult; | |
146 | + private List<String> ppConfirmResult; | |
147 | 147 | |
148 | 148 | /** |
149 | 149 | * 自测通过开始时间 |
... | ... | @@ -158,12 +158,12 @@ public class OrderBaseInfoQueryVO extends BasePageVO implements Serializable { |
158 | 158 | /** |
159 | 159 | * 中期验货结果PASS / FAIL |
160 | 160 | */ |
161 | - private String midCheckResult; | |
161 | + private List<String> midCheckResult; | |
162 | 162 | |
163 | 163 | /** |
164 | 164 | * 尾期验货结果PASS / FAIL |
165 | 165 | */ |
166 | - private String endCheckResult; | |
166 | + private List<String> endCheckResult; | |
167 | 167 | |
168 | 168 | /** |
169 | 169 | * 选择的字段 | ... | ... |
src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
... | ... | @@ -1266,12 +1266,12 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O |
1266 | 1266 | } else { |
1267 | 1267 | orderIds.add(-1L); |
1268 | 1268 | } |
1269 | - } else if (StringUtils.isNotBlank(queryVO.getIdeaSource()) || StringUtils.isNotBlank(queryVO.getManualPreform1()) || StringUtils.isNotBlank(queryVO.getManualPreform2())) { | |
1269 | + } else if (CollectionUtils.isNotEmpty(queryVO.getIdeaSource()) || CollectionUtils.isNotEmpty(queryVO.getManualPreform1()) || CollectionUtils.isNotEmpty(queryVO.getManualPreform2())) { | |
1270 | 1270 | List<OrderCompletionReportDO> reportDOS = reportService.list(new LambdaQueryWrapper<OrderCompletionReportDO>() |
1271 | 1271 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
1272 | - .eq(StringUtils.isNotBlank(queryVO.getIdeaSource()), OrderCompletionReportDO::getIdeaSource, queryVO.getIdeaSource()) | |
1273 | - .eq(StringUtils.isNotBlank(queryVO.getManualPreform2()), OrderCompletionReportDO::getManualPreform2, queryVO.getManualPreform2()) | |
1274 | - .eq(StringUtils.isNotBlank(queryVO.getManualPreform1()), OrderCompletionReportDO::getManualPreform1, queryVO.getManualPreform1())); | |
1272 | + .in(CollectionUtils.isNotEmpty(queryVO.getIdeaSource()), OrderCompletionReportDO::getIdeaSource, queryVO.getIdeaSource()) | |
1273 | + .in(CollectionUtils.isNotEmpty(queryVO.getManualPreform2()), OrderCompletionReportDO::getManualPreform2, queryVO.getManualPreform2()) | |
1274 | + .in(CollectionUtils.isNotEmpty(queryVO.getManualPreform1()), OrderCompletionReportDO::getManualPreform1, queryVO.getManualPreform1())); | |
1275 | 1275 | if (CollectionUtils.isNotEmpty(reportDOS)) { |
1276 | 1276 | Set<Long> reportOrderIds = reportDOS.stream().map(OrderCompletionReportDO::getOrderId).collect(Collectors.toSet()); |
1277 | 1277 | if (CollectionUtils.isNotEmpty(orderIds)) { |
... | ... | @@ -1289,10 +1289,10 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O |
1289 | 1289 | } |
1290 | 1290 | } |
1291 | 1291 | |
1292 | - if (StringUtils.isNotBlank(queryVO.getPpConfirmResult()) || StringUtils.isNotBlank(queryVO.getSelfTestPassStartTime()) || StringUtils.isNotBlank(queryVO.getSelfTestPassEndTime())) { | |
1292 | + if (CollectionUtils.isNotEmpty(queryVO.getPpConfirmResult()) || StringUtils.isNotBlank(queryVO.getSelfTestPassStartTime()) || StringUtils.isNotBlank(queryVO.getSelfTestPassEndTime())) { | |
1293 | 1293 | List<OrderTrackStageDO> trackStageDOS = trackStageService.list(new LambdaQueryWrapper<OrderTrackStageDO>() |
1294 | 1294 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
1295 | - .eq(StringUtils.isNotBlank(queryVO.getPpConfirmResult()), OrderTrackStageDO::getPpConfirmResult, queryVO.getPpConfirmResult()) | |
1295 | + .in(CollectionUtils.isNotEmpty(queryVO.getPpConfirmResult()), OrderTrackStageDO::getPpConfirmResult, queryVO.getPpConfirmResult()) | |
1296 | 1296 | .ge(StringUtils.isNotBlank(queryVO.getSelfTestPassStartTime()), OrderTrackStageDO::getSelfTestPassTime, queryVO.getSelfTestPassStartTime()) |
1297 | 1297 | .le(StringUtils.isNotBlank(queryVO.getSelfTestPassEndTime()), OrderTrackStageDO::getSelfTestPassTime, queryVO.getSelfTestPassEndTime()) |
1298 | 1298 | ); |
... | ... | @@ -1313,11 +1313,11 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O |
1313 | 1313 | } |
1314 | 1314 | } |
1315 | 1315 | |
1316 | - if (StringUtils.isNotBlank(queryVO.getMidCheckResult()) || StringUtils.isNotBlank(queryVO.getEndCheckResult())) { | |
1316 | + if (CollectionUtils.isNotEmpty(queryVO.getMidCheckResult()) || CollectionUtils.isNotEmpty(queryVO.getEndCheckResult())) { | |
1317 | 1317 | List<OrderInspectionStageDO> inspectionStageDOS = inspectionStageService.list(new LambdaQueryWrapper<OrderInspectionStageDO>() |
1318 | 1318 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
1319 | - .eq(StringUtils.isNotBlank(queryVO.getMidCheckResult()), OrderInspectionStageDO::getMidCheckResult, queryVO.getMidCheckResult()) | |
1320 | - .eq(StringUtils.isNotBlank(queryVO.getEndCheckResult()), OrderInspectionStageDO::getEndCheckResult, queryVO.getEndCheckResult()) | |
1319 | + .in(CollectionUtils.isNotEmpty(queryVO.getMidCheckResult()), OrderInspectionStageDO::getMidCheckResult, queryVO.getMidCheckResult()) | |
1320 | + .in(CollectionUtils.isNotEmpty(queryVO.getEndCheckResult()), OrderInspectionStageDO::getEndCheckResult, queryVO.getEndCheckResult()) | |
1321 | 1321 | ); |
1322 | 1322 | if (CollectionUtils.isNotEmpty(inspectionStageDOS)) { |
1323 | 1323 | Set<Long> inspectOrderIds = inspectionStageDOS.stream().map(OrderInspectionStageDO::getOrderId).collect(Collectors.toSet()); |
... | ... | @@ -1359,15 +1359,14 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O |
1359 | 1359 | |
1360 | 1360 | return new LambdaQueryWrapper<OrderBaseInfoDO>() |
1361 | 1361 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
1362 | - .eq(StringUtils.isNotBlank(queryVO.getCustomerCode()), OrderBaseInfoDO::getCustomerCode, queryVO.getCustomerCode()) | |
1362 | + .in(CollectionUtils.isNotEmpty(queryVO.getCustomerCode()), OrderBaseInfoDO::getCustomerCode, queryVO.getCustomerCode()) | |
1363 | 1363 | .eq(StringUtils.isNotBlank(queryVO.getCommitUserName()), OrderBaseInfoDO::getCreateBy, queryVO.getCommitUserName()) |
1364 | 1364 | .ge(StringUtils.isNotBlank(queryVO.getCreateStartTime()), OrderBaseInfoDO::getCreateTime, queryVO.getCreateStartTime()) |
1365 | 1365 | .le(StringUtils.isNotBlank(queryVO.getCreateEndTime()), OrderBaseInfoDO::getCreateTime, queryVO.getCreateEndTime()) |
1366 | - .eq(StringUtils.isNotBlank(queryVO.getOrderStatus()), OrderBaseInfoDO::getOrderStatus, queryVO.getOrderStatus()) | |
1367 | - .eq(StringUtils.isNotBlank(queryVO.getCustomerCode()), OrderBaseInfoDO::getCustomerCode, queryVO.getCustomerCode()) | |
1366 | + .in(CollectionUtils.isNotEmpty(queryVO.getOrderStatus()), OrderBaseInfoDO::getOrderStatus, queryVO.getOrderStatus()) | |
1368 | 1367 | .in(CollectionUtils.isNotEmpty(queryVO.getProjectNo()), OrderBaseInfoDO::getProjectNo, queryVO.getProjectNo()) |
1369 | 1368 | .in(CollectionUtils.isNotEmpty(queryVO.getInnerNo()), OrderBaseInfoDO::getInnerNo, queryVO.getInnerNo()) |
1370 | - .eq(StringUtils.isNotBlank(queryVO.getProductionDepartment()), OrderBaseInfoDO::getProductionDepartment, queryVO.getProductionDepartment()) | |
1369 | + .in(CollectionUtils.isNotEmpty(queryVO.getProductionDepartment()), OrderBaseInfoDO::getProductionDepartment, queryVO.getProductionDepartment()) | |
1371 | 1370 | .eq(StringUtils.isNotBlank(queryVO.getCreateBy()), OrderBaseInfoDO::getCreateBy, queryVO.getCreateBy()) |
1372 | 1371 | .eq(StringUtils.isNotBlank(queryVO.getBusinessPerson()), OrderBaseInfoDO::getBusinessPerson, queryVO.getBusinessPerson()) |
1373 | 1372 | .ge(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignStartTime()), OrderBaseInfoDO::getProductionDepartmentConsignTime, queryVO.getProductionDepartmentConsignStartTime()) | ... | ... |
src/main/java/com/order/erp/service/order/impl/OrderCompletionReportServiceImpl.java
... | ... | @@ -14,6 +14,7 @@ import com.order.erp.domain.dto.order.OrderBaseInfoDO; |
14 | 14 | import com.order.erp.domain.dto.order.OrderCompletionReportDO; |
15 | 15 | import com.order.erp.domain.vo.OrderReportAnalysisExportVo; |
16 | 16 | import com.order.erp.domain.vo.OrderReportAnalysisResultVo; |
17 | +import com.order.erp.domain.vo.OrderReportStatExportVo; | |
17 | 18 | import com.order.erp.domain.vo.order.OrderBaseInfoQueryVO; |
18 | 19 | import com.order.erp.domain.vo.order.OrderCompletionReportQueryVO; |
19 | 20 | import com.order.erp.domain.vo.order.OrderCompletionReportVO; |
... | ... | @@ -82,23 +83,24 @@ public class OrderCompletionReportServiceImpl extends ServiceImpl<OrderCompletio |
82 | 83 | LambdaQueryWrapper<OrderBaseInfoDO> queryWrapper = orderBaseInfoService.buildQueryByParam(queryVO); |
83 | 84 | List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.list(queryWrapper); |
84 | 85 | if (CollectionUtils.isNotEmpty(orderBaseInfoDOList)) { |
86 | + Map<Long, OrderBaseInfoDO> orderBaseInfoDOMap = new HashMap<>(); | |
85 | 87 | Set<Long> orderIds = orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getId).collect(Collectors.toSet()); |
88 | + Set<String> innerNoSet = new HashSet<>(); | |
86 | 89 | List<OrderCompletionReportDO> reportDOS = list(new LambdaQueryWrapper<OrderCompletionReportDO>().in(OrderCompletionReportDO::getOrderId, orderIds)); |
87 | 90 | Map<String, OrderReportAnalysisExportVo> exportVoMap = new HashMap<>(); |
88 | 91 | if (CollectionUtils.isNotEmpty(reportDOS)) { |
89 | - for (OrderCompletionReportDO reportDO : reportDOS) { | |
90 | - if (exportVoMap.containsKey(reportDO.getIdeaSource())) { | |
91 | - handlerExportMap(0, reportDO, exportVoMap); | |
92 | - } | |
93 | - if (exportVoMap.containsKey(reportDO.getManualPreform1())) { | |
94 | - handlerExportMap(1, reportDO, exportVoMap); | |
95 | - } | |
96 | - if (exportVoMap.containsKey(reportDO.getManualPreform2())) { | |
97 | - handlerExportMap(2, reportDO, exportVoMap); | |
92 | + Map<Long, OrderCompletionReportDO> completionReportDOMap = new HashMap<>(); | |
93 | + completionReportDOMap = reportDOS.stream().collect(Collectors.toMap(OrderCompletionReportDO::getOrderId, Function.identity(), (x, y) -> x)); | |
94 | + for (OrderBaseInfoDO orderBaseInfoDO : orderBaseInfoDOList) { | |
95 | + if (completionReportDOMap.containsKey(orderBaseInfoDO.getId())) { | |
96 | + if (!innerNoSet.contains(orderBaseInfoDO.getInnerNo())) { | |
97 | + orderBaseInfoDOMap.put(orderBaseInfoDO.getId(), orderBaseInfoDO); | |
98 | + } | |
99 | + innerNoSet.add(orderBaseInfoDO.getInnerNo()); | |
98 | 100 | } |
99 | - if (!exportVoMap.containsKey(reportDO.getIdeaSource()) | |
100 | - && !exportVoMap.containsKey(reportDO.getManualPreform1()) | |
101 | - && !exportVoMap.containsKey(reportDO.getManualPreform2())) { | |
101 | + } | |
102 | + for (OrderCompletionReportDO reportDO : reportDOS) { | |
103 | + if (orderBaseInfoDOMap.containsKey(reportDO.getOrderId())) { | |
102 | 104 | handlerExportMap(0, reportDO, exportVoMap); |
103 | 105 | handlerExportMap(1, reportDO, exportVoMap); |
104 | 106 | handlerExportMap(2, reportDO, exportVoMap); |
... | ... | @@ -107,7 +109,15 @@ public class OrderCompletionReportServiceImpl extends ServiceImpl<OrderCompletio |
107 | 109 | } |
108 | 110 | List<OrderReportAnalysisExportVo> exportVos = exportMap2exportList(exportVoMap); |
109 | 111 | if (CollectionUtils.isNotEmpty(exportVos)) { |
110 | - ExcelUtils.getInstance().exportObjects2Excel(exportVos, OrderReportAnalysisExportVo.class, response.getOutputStream()); | |
112 | + List<OrderReportStatExportVo> statExportVos = exportVos.stream().map(x -> { | |
113 | + OrderReportStatExportVo statExportVo = new OrderReportStatExportVo(); | |
114 | + statExportVo.setDesigner(x.getDesigner()); | |
115 | + statExportVo.setIdeaSourceRate(x.getIdeaSourceRate().divide(new BigDecimal(innerNoSet.size()), Constant.SIX, RoundingMode.HALF_UP).doubleValue()); | |
116 | + statExportVo.setManualPreform1Rate(x.getManualPreform1Rate().divide(new BigDecimal(innerNoSet.size()), Constant.SIX, RoundingMode.HALF_UP).doubleValue()); | |
117 | + statExportVo.setManualPreform2Rate(x.getManualPreform2Rate().divide(new BigDecimal(innerNoSet.size()), Constant.SIX, RoundingMode.HALF_UP).doubleValue()); | |
118 | + return statExportVo; | |
119 | + }).collect(Collectors.toList()); | |
120 | + ExcelUtils.getInstance().exportObjects2Excel(statExportVos, OrderReportStatExportVo.class, response.getOutputStream()); | |
111 | 121 | } |
112 | 122 | } |
113 | 123 | |
... | ... | @@ -162,14 +172,14 @@ public class OrderCompletionReportServiceImpl extends ServiceImpl<OrderCompletio |
162 | 172 | if (Objects.isNull(exportVo.getManualPreform2Rate())) { |
163 | 173 | exportVo.setManualPreform2Rate(new BigDecimal(0)); |
164 | 174 | } |
165 | - if (Objects.nonNull(reportDO.getIdeaSourceRate())) { | |
166 | - exportVo.setIdeaSourceRate(new BigDecimal(reportDO.getIdeaSourceRate()).add(exportVo.getIdeaSourceRate())); | |
175 | + if (key.equals(reportDO.getIdeaSource())) { | |
176 | + exportVo.setIdeaSourceRate(new BigDecimal(Objects.nonNull(reportDO.getIdeaSourceRate()) ? reportDO.getIdeaSourceRate() : 0).add(exportVo.getIdeaSourceRate())); | |
167 | 177 | } |
168 | - if (Objects.nonNull(reportDO.getManualPreform1Rate())) { | |
169 | - exportVo.setManualPreform1Rate(new BigDecimal(reportDO.getManualPreform1Rate()).add(exportVo.getManualPreform1Rate())); | |
178 | + if (key.equals(reportDO.getManualPreform1())) { | |
179 | + exportVo.setManualPreform1Rate(new BigDecimal(Objects.nonNull(reportDO.getManualPreform1Rate()) ? reportDO.getManualPreform1Rate() : 0).add(exportVo.getManualPreform1Rate())); | |
170 | 180 | } |
171 | - if (Objects.nonNull(reportDO.getManualPreform2Rate())) { | |
172 | - exportVo.setManualPreform2Rate(new BigDecimal(reportDO.getManualPreform2Rate()).add(exportVo.getManualPreform2Rate())); | |
181 | + if (key.equals(reportDO.getManualPreform2())) { | |
182 | + exportVo.setManualPreform2Rate(new BigDecimal(Objects.nonNull(reportDO.getManualPreform2Rate()) ? reportDO.getManualPreform2Rate() : 0).add(exportVo.getManualPreform2Rate())); | |
173 | 183 | } |
174 | 184 | exportVoMap.put(key, exportVo); |
175 | 185 | } | ... | ... |