Commit 8991885d45116f78ffc9a64a67d0ea2966c2e572

Authored by chenhang4442024
1 parent 334d3881

fix:第二版财务,应收款,应付款审核界面的内部编号筛选

src/main/java/com/order/erp/domain/vo/order/InvoiceBillOrderQueryVO.java
... ... @@ -23,6 +23,7 @@ public class InvoiceBillOrderQueryVO extends BasePageVO implements Serializable
23 23  
24 24 private List<Long> ids;
25 25 private Long id;
  26 + private List<Long> orderId;
26 27  
27 28 /**
28 29 * 发票单号
... ... @@ -47,22 +48,22 @@ public class InvoiceBillOrderQueryVO extends BasePageVO implements Serializable
47 48 /**
48 49 * order订单的客户编码
49 50 */
50   - private String customerCode;
  51 + private List<String> customerCode;
51 52  
52 53 /**
53 54 * order订单的项目号
54 55 */
55   - private String projectNo;
  56 + private List<String> projectNo;
56 57  
57 58 /**
58 59 * order订单的生产科
59 60 */
60   - private String productionDepartment;
  61 + private List<String> productionDepartment;
61 62  
62 63 /**
63 64 * order订单的内部编号
64 65 */
65   - private String innerNo;
  66 + private List<String> innerNo;
66 67  
67 68 /**
68 69 * order订单的客户po号
... ...
src/main/java/com/order/erp/domain/vo/order/ProducePaymentCheckBillOrderQueryVO.java
... ... @@ -23,7 +23,7 @@ public class ProducePaymentCheckBillOrderQueryVO extends BasePageVO implements S
23 23  
24 24 private List<Long> ids;
25 25  
26   -
  26 + private List<Long> orderIds;
27 27 private Long id;
28 28 /**
29 29 * 生产科对账单
... ...
src/main/java/com/order/erp/service/order/impl/InvoiceBillOrderServiceImpl.java
... ... @@ -97,140 +97,6 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
97 97 //例如:查询基本信息中项目号为A01-C2409,并且invoice状态为已通过,那么就先去基本信息中查找A01-C2409,然后找到对应的invoice,判断A01-C2409对应的订单集合是否有invoice,有的话,就查找已通过的invocie。
98 98 //要是查询invoice为67,并且订单HOD时间小于2024-12-25,那么就先去invoice中查找是否有checkNo为67的订单,然后查找对应orderId,使用orderId去查找对应订单基本信息,查看是否有HOD小于2024-12-25的单子。
99 99  
100   -
101   - /* RoleEnum role = dataScope.getRole();
102   - LambdaQueryWrapper<InvoiceBillOrderDO> queryWrapper = getQueryWrapper(queryVO);
103   - //跟单也只能看到自己创建的 业务只能看到自己的
104   - if(Objects.nonNull(role) && role.getId().equals(RoleEnum.TRACKER_USER.getId())){
105   - queryWrapper.eq(InvoiceBillOrderDO::getTrackerUser, dataScope.getLoginUserName());
106   - }
107   - if(Objects.nonNull(role) && role.getId().equals(RoleEnum.BUSINESS_USER.getId())){
108   - queryWrapper.eq(InvoiceBillOrderDO::getBusinesPerson, dataScope.getLoginUserName());
109   - }
110   - Page page = new Page<>(queryVO.getPage(), queryVO.getPageSize());
111   - IPage<InvoiceBillOrderDO> iPage = page(page, queryWrapper);
112   - //创建另一个page,包含订单基本信息与invoice,然后一起返回。
113   - return ServerResult.success(iPage);*/
114   -
115   - //一个条件也没有。
116   -// if(true) {
117   -// Page page = new Page<>(queryVO.getPage(), queryVO.getPageSize());
118   -// IPage<OrderBaseInfoDO> iPage = orderBaseInfoService.page(page, new LambdaQueryWrapper<OrderBaseInfoDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).orderByDesc(OrderBaseInfoDO::getId));
119   -// List<OrderBaseInfoDO> orderList = iPage.getRecords();
120   -// //获取关联的信息。
121   -// List<FinanceOrderResultVO> financeOrderResultVOList = null;
122   -// if (CollectionUtils.isNotEmpty(orderList)) {
123   -// List<Long> orderIds = orderList.stream().filter(Objects::nonNull).map(item -> item.getId()).collect(Collectors.toList());
124   -// List<InvoiceBillOrderDO> invoiceBillOrderDOList = list(new LambdaQueryWrapper<InvoiceBillOrderDO>()
125   -// .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(InvoiceBillOrderDO::getOrderId, orderIds));
126   -// List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOList = producePaymentCheckBillOrderService.list(new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>()
127   -// .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(ProducePaymentCheckBillOrderDO::getOrderId, orderIds));
128   -// Map<Long, InvoiceBillOrderDO> invoiceBillOrderDOMap = invoiceBillOrderDOList.stream().collect(Collectors.toMap(InvoiceBillOrderDO::getOrderId, Function.identity(), (x, y) -> x));
129   -// Map<Long, ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOMap = producePaymentCheckBillOrderDOList.stream().collect(Collectors.toMap(ProducePaymentCheckBillOrderDO::getOrderId, Function.identity(), (x, y) -> x));
130   -// financeOrderResultVOList = orderList.stream().filter(Objects::nonNull).map(x -> {
131   -// FinanceOrderResultVO financeOrderResultVO = new FinanceOrderResultVO();
132   -// BeanUtils.copyProperties(x, financeOrderResultVO);
133   -// if (invoiceBillOrderDOMap.containsKey(x.getId())) {
134   -// InvoiceBillOrderDO invoiceBillOrderDO = invoiceBillOrderDOMap.get(x.getId());
135   -// financeOrderResultVO.setInvoiceBillOrderDO(invoiceBillOrderDO);
136   -// }
137   -// if (producePaymentCheckBillOrderDOMap.containsKey(x.getId())) {
138   -// ProducePaymentCheckBillOrderDO producePaymentCheckBillOrderDO = producePaymentCheckBillOrderDOMap.get(x.getId());
139   -// financeOrderResultVO.setProducePaymentCheckBillOrderDO(producePaymentCheckBillOrderDO);
140   -// }
141   -// return financeOrderResultVO;
142   -// }).collect(Collectors.toList());
143   -// }
144   -// IPage<FinanceOrderResultVO> financeOrderResultVOIPage = new Page<>();
145   -// financeOrderResultVOIPage.setRecords(financeOrderResultVOList);
146   -// BeanUtils.copyProperties(iPage, financeOrderResultVOIPage, "records");
147   -// return ServerResult.success(financeOrderResultVOIPage);
148   -// }
149   -// else{
150   - /* //上面单独再写一个if判断,要是一个条件都没有,就直接进行分页查询(只做一下权限)。 唯一问题:这里一下子需要查询多条数据。
151   - RoleEnum role = dataScope.getRole();
152   - List<OrderBaseInfoDO> orderBaseInfoDOList = ByOrderGetOrderId(queryVO, role);
153   - if (CollectionUtils.isEmpty(orderBaseInfoDOList)) {
154   - return ServerResult.success();
155   - }
156   - List<InvoiceBillOrderDO> invoiceBillOrderDOS = ByInvoiceGetOrderId(queryVO, orderBaseInfoDOList);
157   - List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOS = ByCheckGetOrderId(queryVO, orderBaseInfoDOList);
158   -
159   - //取交集
160   -
161   - //取交集。
162   - // 获取每个集合的 id 列表,如果集合为空则返回空集合
163   - Set<Long> orderIds1 = orderBaseInfoDOList != null
164   - ? orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getId).collect(Collectors.toSet())
165   - : Collections.emptySet();
166   -
167   - Set<Long> orderIds2 = invoiceBillOrderDOS != null
168   - ? invoiceBillOrderDOS.stream().map(InvoiceBillOrderDO::getOrderId).collect(Collectors.toSet())
169   - : Collections.emptySet();
170   -
171   - Set<Long> orderIds3 = producePaymentCheckBillOrderDOS != null
172   - ? producePaymentCheckBillOrderDOS.stream().map(ProducePaymentCheckBillOrderDO::getOrderId).collect(Collectors.toSet())
173   - : Collections.emptySet();
174   -
175   - Set<Long> intersection = Stream.of(orderIds1, orderIds2, orderIds3)
176   - .filter(CollectionUtils::isNotEmpty) // 过滤掉空集合
177   - .reduce((set1, set2) -> {
178   - set1.retainAll(set2); // 取交集
179   - return set1;
180   - })
181   - .orElse(Collections.emptySet()); // 如果结果为空则返回空集合
182   - if (CollectionUtils.isEmpty(intersection)) {
183   - return ServerResult.success();
184   - }
185   -
186   - //返回交集的订单数据。 todo
187   - Page page = new Page<>(queryVO.getPage(), queryVO.getPageSize());
188   - IPage<OrderBaseInfoDO> iPage = orderBaseInfoService.page(page, new LambdaQueryWrapper<OrderBaseInfoDO>().in(OrderBaseInfoDO::getId, intersection));
189   - List<OrderBaseInfoDO> orderList = iPage.getRecords();
190   -
191   -
192   - //去对应的invoice中查找。
193   - List<InvoiceBillOrderDO> invoiceBillOrderDOList = list(new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(InvoiceBillOrderDO::getOrderId, intersection));
194   - //去对应的check中查找。
195   - List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOList = producePaymentCheckBillOrderService.list(new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(ProducePaymentCheckBillOrderDO::getOrderId, intersection));
196   -
197   - List<FinanceOrderResultVO> financeOrderResultVOS = null;
198   - if (CollectionUtils.isNotEmpty(orderList)) {
199   - // 将 Map 提升到方法范围内
200   - Map<Long, InvoiceBillOrderDO> invoiceBillOrderDOMap = CollectionUtils.isNotEmpty(invoiceBillOrderDOList)
201   - ? invoiceBillOrderDOList.stream().collect(Collectors.toMap(
202   - InvoiceBillOrderDO::getOrderId,
203   - Function.identity(),
204   - (existing, replacement) -> existing))
205   - : Collections.emptyMap();
206   - Map<Long, ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOMap = CollectionUtils.isNotEmpty(producePaymentCheckBillOrderDOList)
207   - ? producePaymentCheckBillOrderDOList.stream().collect(Collectors.toMap(
208   - ProducePaymentCheckBillOrderDO::getOrderId,
209   - Function.identity(),
210   - (existing, replacement) -> existing))
211   - : Collections.emptyMap();
212   - financeOrderResultVOS = orderList.stream().map(result -> {
213   - //到这复制订单基本信息。 一个整体包含订单基本信息,invoice信息,生产科对账单号信息。
214   - FinanceOrderResultVO financeOrderResultVO = new FinanceOrderResultVO();
215   - BeanUtils.copyProperties(result, financeOrderResultVO);
216   - // 访问 invoiceBillOrderDOMap
217   - if (invoiceBillOrderDOMap.containsKey(result.getId())) {
218   - // 对 invoice 进行处理,填充到整体中,需要orderId一致。
219   - financeOrderResultVO.setInvoiceBillOrderDO(invoiceBillOrderDOMap.get(result.getId()));
220   - }
221   - if (producePaymentCheckBillOrderDOMap.containsKey(result.getId())) {
222   - // 对 check 进行处理,填充到整体中,需要orderId一致。
223   - financeOrderResultVO.setProducePaymentCheckBillOrderDO(producePaymentCheckBillOrderDOMap.get(result.getId()));
224   - }
225   - return financeOrderResultVO;
226   - }).collect(Collectors.toList());
227   - }
228   - IPage<FinanceOrderResultVO> finVoPage = new Page<>();
229   - finVoPage.setRecords(financeOrderResultVOS);
230   - BeanUtils.copyProperties(iPage, finVoPage, "records");
231   - System.out.println("交集 ID 集合:" + intersection);
232   - //返回所有的订单数据。 todo 没有筛选的情况。
233   - return ServerResult.success(finVoPage);*/
234 100 RoleEnum role = dataScope.getRole();
235 101 Page<FinanceOrderResultVO> page = new Page<>(queryVO.getPage(), queryVO.getPageSize());
236 102 if(Objects.nonNull(role) && role.getId().equals(RoleEnum.TRACKER_USER.getId())) {
... ... @@ -247,54 +113,6 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
247 113 return ServerResult.success(financeOrderResultVOIPage);
248 114 }
249 115 // }
250   -
251   -
252   -
253   -
254   - private List<OrderBaseInfoDO> ByOrderGetOrderId(InvoiceBillOrderQueryVO queryVO,RoleEnum role){
255   - LambdaQueryWrapper<OrderBaseInfoDO> lambdawrapper = new LambdaQueryWrapper<OrderBaseInfoDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
256   - .eq(StringUtils.isNotBlank(queryVO.getCustomerCode()), OrderBaseInfoDO::getCustomerCode, queryVO.getCustomerCode())
257   - .eq(StringUtils.isNotBlank(queryVO.getProductionDepartment()), OrderBaseInfoDO::getProductionDepartment, queryVO.getProductionDepartment())
258   - .eq(StringUtils.isNotBlank(queryVO.getCustomerPo()), OrderBaseInfoDO::getCustomerPo, queryVO.getCustomerPo())
259   - .eq(StringUtils.isNotBlank(queryVO.getInnerNo()), OrderBaseInfoDO::getInnerNo, queryVO.getInnerNo())
260   - .eq(StringUtils.isNotBlank(queryVO.getProjectNo()), OrderBaseInfoDO::getProjectNo, queryVO.getProjectNo())
261   - .ge(StringUtils.isNotBlank(queryVO.getCreateStartTime()), OrderBaseInfoDO::getCreateTime, queryVO.getCreateStartTime())
262   - .le(StringUtils.isNotBlank(queryVO.getCreateEndTime()), OrderBaseInfoDO::getCreateTime, queryVO.getCreateEndTime())
263   - .ge(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignStartTime()), OrderBaseInfoDO::getProductionDepartmentConsignTime, queryVO.getProductionDepartmentConsignStartTime())
264   - .le(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignEndTime()), OrderBaseInfoDO::getProductionDepartmentConsignTime, queryVO.getProductionDepartmentConsignEndTime())
265   - .ge(StringUtils.isNotBlank(queryVO.getOrderHodStartTime()), OrderBaseInfoDO::getOrderHodTime, queryVO.getOrderHodStartTime())
266   - .le(StringUtils.isNotBlank(queryVO.getOrderHodEndTime()), OrderBaseInfoDO::getOrderHodTime, queryVO.getOrderHodEndTime());
267   - if(Objects.nonNull(role) && role.getId().equals(RoleEnum.TRACKER_USER.getId())) {
268   - lambdawrapper.eq(OrderBaseInfoDO::getCreateBy, dataScope.getLoginUserName());
269   - }
270   - if (Objects.nonNull(role) && role.getId().equals(RoleEnum.BUSINESS_USER.getId())) {
271   - lambdawrapper.eq(OrderBaseInfoDO::getBusinessPerson, dataScope.getLoginUserName());
272   - }
273   - List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.list(lambdawrapper);
274   - return orderBaseInfoDOList;
275   - }
276   - private List<InvoiceBillOrderDO> ByInvoiceGetOrderId(InvoiceBillOrderQueryVO queryVO,List<OrderBaseInfoDO> orderBaseInfoDOList){
277   - LambdaQueryWrapper<InvoiceBillOrderDO> LambdaQueryWrapper = new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
278   - .eq(StringUtils.isNotBlank(queryVO.getInvoiceNo()), InvoiceBillOrderDO::getInvoiceNo, queryVO.getInvoiceNo())
279   - .eq(Objects.nonNull(queryVO.getInvoiceStatus()), InvoiceBillOrderDO::getStatus, queryVO.getInvoiceStatus())
280   - .ge(StringUtils.isNotBlank(queryVO.getInvoiceStartTime()), InvoiceBillOrderDO::getCreateTime, queryVO.getInvoiceStartTime())
281   - .le(StringUtils.isNotBlank(queryVO.getInvoiceEndTime()), InvoiceBillOrderDO::getCreateTime, queryVO.getInvoiceEndTime());
282   - if(CollectionUtils.isNotEmpty(orderBaseInfoDOList)){
283   - LambdaQueryWrapper.in(InvoiceBillOrderDO::getOrderId, orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getId).collect(Collectors.toList()));
284   - }
285   - return list(LambdaQueryWrapper);
286   - }
287   - private List<ProducePaymentCheckBillOrderDO> ByCheckGetOrderId(InvoiceBillOrderQueryVO queryVO,List<OrderBaseInfoDO> orderBaseInfoDOList){
288   - LambdaQueryWrapper<ProducePaymentCheckBillOrderDO> wrapper = new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
289   - .eq(StringUtils.isNotBlank(queryVO.getInvoiceNo()), ProducePaymentCheckBillOrderDO::getCheckNo, queryVO.getCheckNo())
290   - .eq(Objects.nonNull(queryVO.getInvoiceStatus()), ProducePaymentCheckBillOrderDO::getStatus, queryVO.getCheckNoStatus())
291   - .ge(StringUtils.isNotBlank(queryVO.getCheckStartTime()), ProducePaymentCheckBillOrderDO::getCreateTime, queryVO.getCheckStartTime())
292   - .le(StringUtils.isNotBlank(queryVO.getCheckEndTime()), ProducePaymentCheckBillOrderDO::getCreateTime, queryVO.getCheckEndTime());
293   - if(CollectionUtils.isNotEmpty(orderBaseInfoDOList)){
294   - wrapper.in(ProducePaymentCheckBillOrderDO::getOrderId, orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getId).collect(Collectors.toList()));
295   - }
296   - return producePaymentCheckBillOrderService.list(wrapper);
297   - }
298 116 /**
299 117 * @param queryVO
300 118 * @return
... ... @@ -504,13 +322,83 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
504 322 if (CollectionUtils.isEmpty(invoiceBillOrderDOS)) {
505 323 return null;
506 324 }
507   -// List<InvoiceBillMappingDO> invoiceBillMappingDOS = invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(InvoiceBillMappingDO::getInvoiceBillId, ids));
508   -// if (CollectionUtils.isEmpty(invoiceBillMappingDOS)) {
509   -// return null;
510   -// }
511 325 Map<Long, InvoiceBillOrderDO> invoiceBillOrderDOMap = invoiceBillOrderDOS.stream().collect(Collectors.toMap(InvoiceBillOrderDO::getOrderId, Function.identity(), (x, y) -> x));
512   - //第一版,上面为第二版 Map<Long, InvoiceBillMappingDO> orderBillMap = invoiceBillMappingDOS.stream().collect(Collectors.toMap(InvoiceBillMappingDO::getOrderId, Function.identity(), (x, y) -> x));
513 326 List<InvoiceOrderBaseItemVO> itemVOS = getInvoiceOrderBaseItems(invoiceBillOrderDOMap);
  327 + /* //得到里面的orderId,这个里面的orderId一定是有对应invocie,不然也不会查出来。然后得到前端传来的orderIds,筛选出没有invoice的orderId。
  328 + List<Long> existOrderIds = invoiceBillOrderDOS.stream().map(InvoiceBillOrderDO::getOrderId).collect(Collectors.toList());
  329 + List<Long> notExistOrderIds = queryVO.getOrderIds().stream().filter(x -> !existOrderIds.contains(x)).collect(Collectors.toList());
  330 + //得到没有invoice的orderIds之后,订单信息,查询利润信息。
  331 + List<OrderProfitAnalysisDO> profitAnalysisDOS = profitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>()
  332 + .eq(BaseDO::getEnableFlag,Constant.ENABLE_TEN)
  333 + .in(OrderProfitAnalysisDO::getOrderId,notExistOrderIds));
  334 + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(notExistOrderIds);
  335 + //根据客户编码进行分类,计算形同客户编码的利润信息,然后累加。
  336 + Map<String, List<OrderBaseInfoDO>> groupedByCustomerCode = orderBaseInfoDOList.stream()
  337 + .collect(Collectors.groupingBy(OrderBaseInfoDO::getCustomerCode));
  338 + //得到客户编码相同的利润信息。 计算客户编码相同的利润信息的总和。 需要遍历这个map集合,然后把每一次值中的id集合收集起来,每一次遍历代表不同的客户编码。然后得到对应利润信息。
  339 + HashMap<String, BigDecimal> hashMap = new HashMap<>();
  340 + for(Map.Entry<String, List<OrderBaseInfoDO>> entry: groupedByCustomerCode.entrySet()){
  341 + List<OrderBaseInfoDO> entryValue = entry.getValue();
  342 + List<Long> orderids = entryValue.stream().map(OrderBaseInfoDO::getId).collect(Collectors.toList());
  343 + List<OrderProfitAnalysisDO> orderProfitAnalysisDOS = profitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  344 + .in(OrderProfitAnalysisDO::getOrderId, orderids));
  345 + BigDecimal totalCustomerPrice = orderProfitAnalysisDOS.stream()
  346 + .map(OrderProfitAnalysisDO::getCustomerTotalPrice) // 提取每个元素的 customerTotalPrice(double 类型)
  347 + .filter(Objects::nonNull) // 过滤掉 null 值
  348 + .map(BigDecimal::valueOf) // 转换为 BigDecimal 类型
  349 + .reduce(BigDecimal.ZERO, BigDecimal::add);
  350 + // 累加,其中key为客户编码。
  351 + hashMap.put(entry.getKey(),totalCustomerPrice);
  352 + }*/
  353 +
  354 + List<Long> existOrderIds = invoiceBillOrderDOS.stream()
  355 + .map(InvoiceBillOrderDO::getOrderId)
  356 + .collect(Collectors.toList());
  357 +
  358 + List<Long> notExistOrderIds = queryVO.getOrderId().stream()
  359 + .filter(orderId -> !existOrderIds.contains(orderId))
  360 + .collect(Collectors.toList());
  361 +
  362 +// 查询没有 invoice 的订单信息和利润信息
  363 + /* List<OrderProfitAnalysisDO> profitAnalysisDOS = profitAnalysisService.list(
  364 + new LambdaQueryWrapper<OrderProfitAnalysisDO>()
  365 + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  366 + .in(OrderProfitAnalysisDO::getOrderId, notExistOrderIds));*/
  367 + Map<String, BigDecimal> customerProfitMap=null;
  368 + if(CollectionUtils.isNotEmpty(notExistOrderIds)) {
  369 +
  370 + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(notExistOrderIds);
  371 +
  372 +// 根据客户编码进行分类
  373 + Map<String, List<OrderBaseInfoDO>> groupedByCustomerCode = orderBaseInfoDOList.stream()
  374 + .collect(Collectors.groupingBy(OrderBaseInfoDO::getCustomerCode));
  375 +
  376 +// 计算每个客户编码的总利润
  377 + customerProfitMap = groupedByCustomerCode.entrySet().stream()
  378 + .collect(Collectors.toMap(
  379 + Map.Entry::getKey,
  380 + entry -> {
  381 + List<Long> orderIds = entry.getValue().stream()
  382 + .map(OrderBaseInfoDO::getId)
  383 + .collect(Collectors.toList());
  384 +
  385 + List<OrderProfitAnalysisDO> filteredProfitAnalysisDOS = profitAnalysisService.list(
  386 + new LambdaQueryWrapper<OrderProfitAnalysisDO>()
  387 + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  388 + .in(OrderProfitAnalysisDO::getOrderId, orderIds));
  389 +
  390 + return filteredProfitAnalysisDOS.stream()
  391 + .map(OrderProfitAnalysisDO::getCustomerTotalPrice)
  392 + .filter(Objects::nonNull)
  393 + .map(BigDecimal::valueOf)
  394 + .reduce(BigDecimal.ZERO, BigDecimal::add);
  395 + }
  396 + ));
  397 +
  398 + }
  399 + // 这样得到了没有invoice的基础信息,利润信息,然后根据客户编码进行分类,然后相同客户编码的就进行累加。下一步,就是去excel表格中找到与自己相同的客户编码,
  400 + // 然后放在下面。
  401 +
514 402 //第一版,上面为第二版 List<InvoiceOrderBaseItemVO> itemVOS = getInvoiceOrderBaseItems(orderBillMap);
515 403 //这里出问题了。
516 404 // Map<String, InvoiceBillOrderDO> invoiceBillMap = invoiceBillOrderDOS.stream().collect(Collectors.toMap(InvoiceBillOrderDO::getInvoiceNo, Function.identity(), (x, y) -> x));
... ... @@ -565,7 +453,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
565 453 }
566 454 ));
567 455 Map<String, List<InvoiceOrderBaseItemVO>> baseItemMap = itemVOS.stream().collect(Collectors.groupingBy(InvoiceOrderBaseItemVO::getInvoiceCode));
568   - List<InvoiceBillAnalysisExportVO> exportVOS = wrapperAnalysisExport(invoiceBillMap, baseItemMap);
  456 + List<InvoiceBillAnalysisExportVO> exportVOS = wrapperAnalysisExport(invoiceBillMap, baseItemMap,customerProfitMap);
569 457 return wrapperAnalysisResultVO(exportVOS);
570 458 }
571 459  
... ... @@ -630,18 +518,37 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
630 518 * @param baseItemMap
631 519 * @return
632 520 */
633   - private List<InvoiceBillAnalysisExportVO> wrapperAnalysisExport(Map<String, InvoiceBillOrderDO> invoiceBillOrderDOMap, Map<String, List<InvoiceOrderBaseItemVO>> baseItemMap) {
  521 + private List<InvoiceBillAnalysisExportVO> wrapperAnalysisExport(Map<String, InvoiceBillOrderDO> invoiceBillOrderDOMap, Map<String, List<InvoiceOrderBaseItemVO>> baseItemMap,Map<String,BigDecimal> hashMap) {
634 522 if (CollectionUtils.isEmpty(invoiceBillOrderDOMap)) {
635 523 return Collections.emptyList();
636 524 }
637 525 List<InvoiceBillAnalysisExportVO> results = new ArrayList<>();
638 526 for (Map.Entry<String, InvoiceBillOrderDO> entry : invoiceBillOrderDOMap.entrySet()) {
639 527 InvoiceBillOrderDO invoiceBillOrderDO = entry.getValue();
  528 + //invoiceBillOrderDOMap就是总的,而baseItemMap。 例如:invoiceBillOrderMap就是多个A01的累加值。而baseItemMap就是相同的invoice中散的A01。
640 529 List<InvoiceBillAnalysisExportVO> exportVOS = transfer2analysisExportVO(invoiceBillOrderDO, baseItemMap);
641 530 if (CollectionUtils.isNotEmpty(exportVOS)) {
642 531 results.addAll(exportVOS);
643 532 }
644 533 }
  534 + if(CollectionUtils.isNotEmpty(hashMap)){
  535 + for(Map.Entry<String,BigDecimal> entryk : hashMap.entrySet()){
  536 + //这里注释取消了只有勾选的订单中包含穿了invoice的订单才会在excel中展示,现在是不管这个订单有没有创建invoice的,直接展示。
  537 + /* if(results.stream()
  538 + .map(InvoiceBillAnalysisExportVO::getCustomerCode)
  539 + .anyMatch(customerCode -> customerCode.equals(entryk.getKey()))){*/
  540 + InvoiceBillAnalysisExportVO exportVOy = new InvoiceBillAnalysisExportVO();
  541 + exportVOy.setCustomerCode(entryk.getKey());
  542 + exportVOy.setCustomerTotalPrice(entryk.getValue().setScale(2, BigDecimal.ROUND_HALF_UP));
  543 + exportVOy.setDeductAmount(BigDecimal.ZERO);
  544 + exportVOy.setActualReceivableAmount(entryk.getValue().setScale(2, BigDecimal.ROUND_HALF_UP));
  545 + exportVOy.setActualPayedAmount(BigDecimal.ZERO);
  546 + exportVOy.setOtherAmount(BigDecimal.ZERO);
  547 + exportVOy.setOtherTotalAmount(entryk.getValue().setScale(2, BigDecimal.ROUND_HALF_UP));
  548 + results.add(exportVOy);
  549 + /*}*/
  550 + }
  551 + }
645 552 return results;
646 553 }
647 554  
... ... @@ -659,6 +566,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
659 566 for (Map.Entry<String, List<InvoiceOrderBaseItemVO>> entry : listMap.entrySet()) {
660 567 String customerCode = entry.getKey();
661 568 List<InvoiceOrderBaseItemVO> itemVOS = entry.getValue();
  569 + //invoiceBillOrderDO就是相同客户编码的总的集合。 例如:多个A01相加的值,里面的客户总价等多个A01都是累加的。
662 570 InvoiceBillAnalysisExportVO exportVO = buildAnalysisExportVO(invoiceBillOrderDO);
663 571 exportVO.setCustomerCode(customerCode);
664 572 if (CollectionUtils.isEmpty(itemVOS)) {
... ... @@ -668,11 +576,33 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
668 576 for (InvoiceOrderBaseItemVO itemVO : itemVOS) {
669 577 customerTotalPrice = customerTotalPrice.add(Objects.nonNull(itemVO.getCustomerTotalPrice()) ? itemVO.getCustomerTotalPrice() : new BigDecimal(Constant.ZERO));
670 578 }
  579 + //这里设置相同客户编码的客户总价总的价钱。
671 580 exportVO.setCustomerTotalPrice(customerTotalPrice.setScale(2, BigDecimal.ROUND_HALF_UP));
672 581 }
673 582 results.add(exportVO);
  583 + //感觉在这里加上,如果客户编码一致就加上。
  584 + /* for(Map.Entry<String,BigDecimal> entryk : hashMap.entrySet()){
  585 + if(customerCode.equals(entryk.getKey())){
  586 + InvoiceBillAnalysisExportVO exportVOy = new InvoiceBillAnalysisExportVO();
  587 + exportVOy.setCustomerCode(entryk.getKey());
  588 + exportVOy.setCustomerTotalPrice(entryk.getValue());
  589 + results.add(exportVOy);
  590 + }
  591 + }*/
674 592 }
  593 + /*for(Map.Entry<String,BigDecimal> entryk : hashMap.entrySet()){
  594 + if(results.stream()
  595 + .map(InvoiceBillAnalysisExportVO::getCustomerCode)
  596 + .anyMatch(customerCode -> customerCode.equals(entryk.getKey()))){
  597 + InvoiceBillAnalysisExportVO exportVOy = new InvoiceBillAnalysisExportVO();
  598 + exportVOy.setCustomerCode(entryk.getKey());
  599 + exportVOy.setCustomerTotalPrice(entryk.getValue());
  600 + results.add(exportVOy);
  601 + }
  602 + }*/
  603 + //如果没有对的上的客户编码,就在这里加上。
675 604 }
  605 + //这个results集合里面存储的就是不同客户编码的累加值。 667-7878
676 606 return results;
677 607 }
678 608  
... ... @@ -780,19 +710,19 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
780 710 */
781 711 private List<Long> filterOrderIdsBy(InvoiceBillOrderQueryVO queryVO) {
782 712 Boolean flag = false;
783   - if (StringUtils.isNotBlank(queryVO.getCustomerCode())) {
  713 + if (CollectionUtils.isNotEmpty(queryVO.getCustomerCode())) {
784 714 flag = flag | true;
785 715 }
786   - if (StringUtils.isNotBlank(queryVO.getProductionDepartment())) {
  716 + if (CollectionUtils.isNotEmpty(queryVO.getProductionDepartment())) {
787 717 flag = flag | true;
788 718 }
789 719 if (StringUtils.isNotBlank(queryVO.getCustomerPo())) {
790 720 flag = flag | true;
791 721 }
792   - if (StringUtils.isNotBlank(queryVO.getInnerNo())) {
  722 + if (CollectionUtils.isNotEmpty(queryVO.getInnerNo())) {
793 723 flag = flag | true;
794 724 }
795   - if (StringUtils.isNotBlank(queryVO.getProjectNo())) {
  725 + if (CollectionUtils.isNotEmpty(queryVO.getProjectNo())) {
796 726 flag = flag | true;
797 727 }
798 728 if(StringUtils.isNotBlank(queryVO.getCreateStartTime())){
... ... @@ -818,11 +748,11 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
818 748 }
819 749 LambdaQueryWrapper<OrderBaseInfoDO> queryWrapper = new LambdaQueryWrapper<OrderBaseInfoDO>()
820 750 .eq(OrderBaseInfoDO::getEnableFlag, Constant.ENABLE_TEN)
821   - .eq(StringUtils.isNotBlank(queryVO.getCustomerCode()), OrderBaseInfoDO::getCustomerCode, queryVO.getCustomerCode())
822   - .eq(StringUtils.isNotBlank(queryVO.getProductionDepartment()), OrderBaseInfoDO::getProductionDepartment, queryVO.getProductionDepartment())
  751 + .in(CollectionUtils.isNotEmpty(queryVO.getCustomerCode()), OrderBaseInfoDO::getCustomerCode, queryVO.getCustomerCode())
  752 + .in(CollectionUtils.isNotEmpty(queryVO.getProductionDepartment()), OrderBaseInfoDO::getProductionDepartment, queryVO.getProductionDepartment())
823 753 .eq(StringUtils.isNotBlank(queryVO.getCustomerPo()), OrderBaseInfoDO::getCustomerPo, queryVO.getCustomerPo())
824   - .eq(StringUtils.isNotBlank(queryVO.getInnerNo()), OrderBaseInfoDO::getInnerNo, queryVO.getInnerNo())
825   - .eq(StringUtils.isNotBlank(queryVO.getProjectNo()), OrderBaseInfoDO::getProjectNo, queryVO.getProjectNo())
  754 + .in(CollectionUtils.isNotEmpty(queryVO.getInnerNo()), OrderBaseInfoDO::getInnerNo, queryVO.getInnerNo())
  755 + .in(CollectionUtils.isNotEmpty(queryVO.getProjectNo()), OrderBaseInfoDO::getProjectNo, queryVO.getProjectNo())
826 756 .ge(StringUtils.isNotBlank(queryVO.getCreateStartTime()), OrderBaseInfoDO::getCreateTime, queryVO.getCreateStartTime())
827 757 .le(StringUtils.isNotBlank(queryVO.getCreateEndTime()), OrderBaseInfoDO::getCreateTime, queryVO.getCreateEndTime())
828 758 .ge(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignStartTime()), OrderBaseInfoDO::getProductionDepartmentConsignTime, queryVO.getProductionDepartmentConsignStartTime())
... ...
src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
... ... @@ -137,30 +137,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;OrderFieldLockAp
137 137 resultVO.setFieldInfos(fieldVO);
138 138 }
139 139 if (ApplyTypeEnum.INVOICE_BILL_APPLY.getType().equals(x.getType())) {
140   - // 解决待审批列表中的应收款要显示内部编码。 这里开始
141 140 OrderLockFieldVO orderLockFieldVO = JSONObject.parseObject(fields, OrderLockFieldVO.class);
142   - /* if(Objects.nonNull(orderLockFieldVO.getInvoiceFieldVO()) && StringUtils.isNotBlank(orderLockFieldVO.getInvoiceFieldVO().getInvoiceNo())){
143   - *//* List<InvoiceBillMappingDO> invoiceBillMappingDOList= invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>()
144   - .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
145   - .eq(InvoiceBillMappingDO::getInvoiceNo, orderLockFieldVO.getInvoiceBillOrderDO().getInvoiceNo()));*//*
146   - List<InvoiceBillOrderDO> invoiceBillMappingDOList = invoiceBillOrderService.list(new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
147   - .eq(InvoiceBillOrderDO::getInvoiceNo, orderLockFieldVO.getInvoiceFieldVO().getInvoiceNo()));
148   - if(CollectionUtils.isNotEmpty(invoiceBillMappingDOList)){
149   - Set<Long> orderIds = invoiceBillMappingDOList.stream().map(InvoiceBillOrderDO::getOrderId).filter(Objects::nonNull).collect(Collectors.toSet());
150   - if(CollectionUtils.isNotEmpty(orderIds)){
151   - List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(orderIds);
152   - if(CollectionUtils.isNotEmpty(orderBaseInfoDOList)){
153   - Set<String> innerNoList = orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getInnerNo).filter(Objects::nonNull).collect(Collectors.toSet());
154   - if(CollectionUtils.isNotEmpty(innerNoList)){
155   - OrderBaseInfoVO orderBaseInfoVO = new OrderBaseInfoVO();
156   - resultVO.setOrderBaseInfo(orderBaseInfoVO);
157   - orderBaseInfoVO.setInnerNo(resultVO.getOrderBaseInfo().getInnerNo().join(",", innerNoList));
158   - }
159   - }
160   - }
161   - }
162   - }*/ //这里结束 上述为待审核列表中应收款要显示内部编码。 这部分不需要了,内部编码放在里面了。
163   - //这部分的目的是,对于跟单员和业务员他们也能查看到应收款和应付款中各自负责订单的审核情况。 而财务和admin则会执行else{},会看到所有的审核订单信息。
164 141 if(RoleEnum.BUSINESS_USER.getCode().equals(roleEnum.getCode())){
165 142 if(Objects.nonNull(orderLockFieldVO.getInvoiceFieldVO()) && orderLockFieldVO.getInvoiceFieldVO().getBusinesPerson().equals(loginUserName)){
166 143 resultVO.setFieldInfos(JSONObject.parseObject(fields, OrderLockFieldVO.class));
... ... @@ -426,33 +403,35 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;OrderFieldLockAp
426 403 .eq(Objects.nonNull(queryVO.getStatus()), OrderFieldLockApplyDO::getStatus, queryVO.getStatus())
427 404 .in(CollectionUtils.isNotEmpty(queryVO.getStatusList()), OrderFieldLockApplyDO::getStatus, queryVO.getStatusList())
428 405 .in(CollectionUtils.isNotEmpty(orderIds), OrderFieldLockApplyDO::getOrderId, orderIds);
429   - //这里应该加上应收款待审核,应付款待审核,应付款已审核,应收款已审核已审核的一个条件。
  406 + //这里应该加上应收款待审核,应付款待审核,应付款已审核,应收款已审核已审核的一个条件。 目前只支持单个字符串搜索,不支持多个。
430 407 if(Objects.nonNull(queryVO.getType())){
  408 + //发票,应付款审核。
431 409 if(Constant.FOUR == String.valueOf(queryVO.getType()).length()){
432 410 int firstTwoDigits = queryVO.getType() / 100;
433 411 int lastTwoDigits = queryVO.getType() % 100;
434 412 queryWrapper.in(OrderFieldLockApplyDO::getType,firstTwoDigits,lastTwoDigits);
  413 + //目前是只能通过内部编号查询出应付款审核,无法查询出发票信息。
435 414 if(CollectionUtils.isNotEmpty(queryVO.getInnerNo())){
436   - String innerNoList = queryVO.getInnerNo().stream()
437   - .map(innerNo -> "'" + innerNo + "'") // 包装为单引号
438   - .collect(Collectors.joining(","));
  415 + String queryInnerNo = queryVO.getInnerNo().get(0).trim();
439 416 queryWrapper.apply(
440   - "JSON_UNQUOTE(JSON_EXTRACT(fields, '$.invoiceFieldVO.innerNo')) in (" + innerNoList + ")"
  417 + "JSON_UNQUOTE(JSON_EXTRACT(fields, '$.producePaymentCheckBillFieldVO.innerNo')) = {0}",
  418 + queryInnerNo
441 419 );
442 420 }
443 421 }else{
  422 + //应收款审核。
444 423 if(Objects.nonNull(queryVO.getType()) && queryVO.getType().equals(ApplyTypeEnum.INVOICE_BILL_APPLY.getType())){
445 424 queryWrapper.eq(Objects.nonNull(queryVO.getType()), OrderFieldLockApplyDO::getType, queryVO.getType());
446 425 //这个内部编号单独针对于应付款申请设置的。
447 426 if(CollectionUtils.isNotEmpty(queryVO.getInnerNo())){
448   - String innerNoList = queryVO.getInnerNo().stream()
449   - .map(innerNo -> "'" + innerNo + "'") // 包装为单引号
450   - .collect(Collectors.joining(","));
  427 + String queryInnerNo = queryVO.getInnerNo().get(0).trim();
451 428 queryWrapper.apply(
452   - "JSON_UNQUOTE(JSON_EXTRACT(fields, '$.producePaymentCheckBillFieldVO.innerNo')) in (" + innerNoList + ")"
  429 + "JSON_UNQUOTE(JSON_EXTRACT(fields, '$.invoiceFieldVO.innerNo')) = {0}",
  430 + queryInnerNo
453 431 );
454 432 }
455 433 }
  434 + //其他审核类型。
456 435 queryWrapper.eq(Objects.nonNull(queryVO.getType()), OrderFieldLockApplyDO::getType, queryVO.getType());
457 436 }
458 437 }
... ...
src/main/java/com/order/erp/service/order/impl/ProducePaymentCheckBillOrderServiceImpl.java
... ... @@ -173,6 +173,32 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce
173 173 // Map<Long, CheckBillMappingDO> orderBillMap = checkBillMappingDOS.stream().collect(Collectors.toMap(CheckBillMappingDO::getOrderId, Function.identity(), (x, y) -> x));
174 174  
175 175 List<CheckOrderBaseItemVO> itemVOS = getCheckOrderBaseItems(orderBillMap);
  176 + List<Long> existOrderIds = checkBillOrderDOS.stream().map(ProducePaymentCheckBillOrderDO::getOrderId).collect(Collectors.toList());
  177 + List<Long> notExistOrderIds = queryVO.getOrderIds().stream().filter(orderId -> !existOrderIds.contains(orderId))
  178 + .collect(Collectors.toList());
  179 + Map<String, BigDecimal> productionDepartmentProfitMap=null;
  180 + if(CollectionUtils.isNotEmpty(notExistOrderIds)){
  181 + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(notExistOrderIds);
  182 + Map<String, List<OrderBaseInfoDO>> groupedByProductionDepartMent = orderBaseInfoDOList.stream().collect(Collectors.groupingBy(OrderBaseInfoDO::getProductionDepartment));
  183 + productionDepartmentProfitMap = groupedByProductionDepartMent.entrySet().stream()
  184 + .collect(Collectors.toMap(
  185 + Map.Entry::getKey,
  186 + entry -> {
  187 + List<Long> orderIds = entry.getValue().stream()
  188 + .map(OrderBaseInfoDO::getId)
  189 + .collect(Collectors.toList());
  190 + List<OrderProfitAnalysisDO> filteredProfitAnalysisDOS = profitAnalysisService.list(
  191 + new LambdaQueryWrapper<OrderProfitAnalysisDO>()
  192 + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  193 + .in(OrderProfitAnalysisDO::getOrderId, orderIds));
  194 + return filteredProfitAnalysisDOS.stream()
  195 + .map(OrderProfitAnalysisDO::getProductionDepartmentTotalPrice)
  196 + .filter(Objects::nonNull)
  197 + .map(BigDecimal::valueOf)
  198 + .reduce(BigDecimal.ZERO, BigDecimal::add);
  199 + }
  200 + ));
  201 + }
176 202 // Map<String, ProducePaymentCheckBillOrderDO> checkBillOrderDOMap = checkBillOrderDOS.stream().collect(Collectors.toMap(ProducePaymentCheckBillOrderDO::getCheckNo, Function.identity(), (x, y) -> x));
177 203 Map<String, ProducePaymentCheckBillOrderDO> checkBillOrderDOMap = checkBillOrderDOS.stream()
178 204 .collect(Collectors.toMap(
... ... @@ -209,7 +235,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce
209 235 }
210 236 ));
211 237 Map<String, List<CheckOrderBaseItemVO>> baseItemMap = itemVOS.stream().collect(Collectors.groupingBy(CheckOrderBaseItemVO::getCheckNo));
212   - List<CheckBillAnalysisExportVO> exportVOS = wrapperAnalysisExport(checkBillOrderDOMap, baseItemMap);
  238 + List<CheckBillAnalysisExportVO> exportVOS = wrapperAnalysisExport(checkBillOrderDOMap, baseItemMap,productionDepartmentProfitMap);
213 239 return wrapperAnalysisResultVO(exportVOS);
214 240 }
215 241  
... ... @@ -261,7 +287,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce
261 287 * @param baseItemMap
262 288 * @return
263 289 */
264   - private List<CheckBillAnalysisExportVO> wrapperAnalysisExport(Map<String, ProducePaymentCheckBillOrderDO> checkBillOrderDOMap, Map<String, List<CheckOrderBaseItemVO>> baseItemMap) {
  290 + private List<CheckBillAnalysisExportVO> wrapperAnalysisExport(Map<String, ProducePaymentCheckBillOrderDO> checkBillOrderDOMap, Map<String, List<CheckOrderBaseItemVO>> baseItemMap,Map<String,BigDecimal> productionDepartmentProfitMap) {
265 291 if (CollectionUtils.isEmpty(checkBillOrderDOMap)) {
266 292 return Collections.emptyList();
267 293 }
... ... @@ -273,6 +299,18 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce
273 299 results.addAll(exportVOS);
274 300 }
275 301 }
  302 + if(CollectionUtils.isNotEmpty(productionDepartmentProfitMap)){
  303 + for(Map.Entry<String,BigDecimal> entry : productionDepartmentProfitMap.entrySet()){
  304 + CheckBillAnalysisExportVO exportVO = new CheckBillAnalysisExportVO();
  305 + exportVO.setProductionDepartment(entry.getKey());
  306 + exportVO.setProductionDepartmentTotalPrice(entry.getValue().setScale(2, RoundingMode.HALF_UP));
  307 + exportVO.setDeductAmount(BigDecimal.ZERO);
  308 + exportVO.setActualPayedAmount(BigDecimal.ZERO);
  309 + exportVO.setUnPayedAmount(entry.getValue().setScale(2, RoundingMode.HALF_UP));
  310 + exportVO.setCalculateActualPayedAmount(entry.getValue().setScale(2, RoundingMode.HALF_UP));
  311 + results.add(exportVO);
  312 + }
  313 + }
276 314 return results;
277 315 }
278 316  
... ...
src/main/resources/application-test.yml
... ... @@ -57,7 +57,7 @@ spring:
57 57 testWhileIdle: true
58 58 testOnBorrow: true
59 59 testOnReturn: true
60   - password: Erp@test123456
  60 + password: eJ8(bD6]wN6=gI5=
61 61 time-between-eviction-runs-millis: 1000
62 62 url: jdbc:mysql://47.104.8.35:3307/order-erp?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=false&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&allowMultiQueries=true&useAffectedRows=true&autoReconnectForPools=true
63 63 username: root
... ...
src/main/resources/application.yml
1 1 server:
2   - port: 8000
  2 + port: 18000
3 3  
4 4 spring:
5 5 profiles:
6   - active: prod
7 6 \ No newline at end of file
  7 + active: test
8 8 \ No newline at end of file
... ...
src/main/resources/mapper/InvoiceBillOrderMapper.xml
... ... @@ -133,17 +133,29 @@
133 133 <if test="queryVO.checkNoStatus != null">
134 134 AND o.check_status = #{queryVO.checkNoStatus}
135 135 </if>
136   - <if test="queryVO.customerCode != null and queryVO.customerCode != ''">
137   - AND o.customer_code = #{queryVO.customerCode}
138   - </if>
139   - <if test="queryVO.projectNo != null and queryVO.projectNo != ''">
140   - AND o.project_no = #{queryVO.projectNo}
141   - </if>
142   - <if test="queryVO.productionDepartment != null and queryVO.productionDepartment != ''">
143   - AND o.production_department = #{queryVO.productionDepartment}
144   - </if>
145   - <if test="queryVO.innerNo != null and queryVO.innerNo != ''">
146   - AND o.inner_no = #{queryVO.innerNo}
  136 + <if test="queryVO.customerCode != null and queryVO.customerCode.size > 0 ">
  137 + AND o.customer_code IN
  138 + <foreach collection="queryVO.customerCode" item="customerCode" open="(" separator="," close=")">
  139 + #{customerCode}
  140 + </foreach>
  141 + </if>
  142 + <if test="queryVO.projectNo != null and queryVO.projectNo.size > 0 ">
  143 + AND o.project_no IN
  144 + <foreach collection="queryVO.projectNo" item="projectNo" open="(" separator="," close=")">
  145 + #{projectNo}
  146 + </foreach>
  147 + </if>
  148 + <if test="queryVO.productionDepartment != null and queryVO.productionDepartment.size > 0 ">
  149 + AND o.production_department IN
  150 + <foreach collection="queryVO.productionDepartment" item="productionDepartment" open="(" separator="," close=")">
  151 + #{productionDepartment}
  152 + </foreach>
  153 + </if>
  154 + <if test="queryVO.innerNo != null and queryVO.innerNo.size > 0 ">
  155 + AND o.inner_no IN
  156 + <foreach collection="queryVO.innerNo" item="innerNo" open="(" separator="," close=")">
  157 + #{innerNo}
  158 + </foreach>
147 159 </if>
148 160 <if test="queryVO.customerPo != null and queryVO.customerPo != ''">
149 161 AND o.customer_po = #{queryVO.customerPo}
... ...