Commit 9eeb9d1e23fd18158b9947e3a0b7cea8e8dd648f

Authored by 谢茂盛
1 parent 070465c7

feat: 问题修复项

1、设计师权重导出
2、订单列表多选
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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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 }
... ...