Commit c399957dd111b31b70a41d6967b8e78d2e8605dc
1 parent
e5d3ac96
fix:第二版财务,修复应付款汇总,应收款汇总问题
Showing
7 changed files
with
175 additions
and
17 deletions
src/main/java/com/order/erp/domain/dto/order/OrderBaseInfoDO.java
@@ -129,5 +129,14 @@ public class OrderBaseInfoDO extends BaseDO implements Serializable { | @@ -129,5 +129,14 @@ public class OrderBaseInfoDO extends BaseDO implements Serializable { | ||
129 | * 生产科对账单号 | 129 | * 生产科对账单号 |
130 | */ | 130 | */ |
131 | private String checkNo; | 131 | private String checkNo; |
132 | + //invoice状态和checkstatus状态。 | ||
133 | + /** | ||
134 | + * invoice状态 | ||
135 | + */ | ||
136 | + private Integer invoiceStatus; | ||
137 | + /** | ||
138 | + * 生产科对账单号状态 | ||
139 | + */ | ||
140 | + private Integer checkStatus; | ||
132 | 141 | ||
133 | } | 142 | } |
src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoQueryVO.java
@@ -197,5 +197,13 @@ public class OrderBaseInfoQueryVO extends BasePageVO implements Serializable { | @@ -197,5 +197,13 @@ public class OrderBaseInfoQueryVO extends BasePageVO implements Serializable { | ||
197 | * checkNo 首页筛选Check。 | 197 | * checkNo 首页筛选Check。 |
198 | */ | 198 | */ |
199 | private List<String> CheckNo; | 199 | private List<String> CheckNo; |
200 | + /** | ||
201 | + * invoice invoice状态。 | ||
202 | + */ | ||
203 | + private Long invoiceStatus; | ||
204 | + /** | ||
205 | + * checkNo checkNo状态。 | ||
206 | + */ | ||
207 | + private Long checkNoStatus; | ||
200 | } | 208 | } |
201 | 209 |
src/main/java/com/order/erp/service/order/impl/InvoiceBillOrderServiceImpl.java
@@ -512,7 +512,58 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | @@ -512,7 +512,58 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | ||
512 | //第一版,上面为第二版 Map<Long, InvoiceBillMappingDO> orderBillMap = invoiceBillMappingDOS.stream().collect(Collectors.toMap(InvoiceBillMappingDO::getOrderId, Function.identity(), (x, y) -> x)); | 512 | //第一版,上面为第二版 Map<Long, InvoiceBillMappingDO> orderBillMap = invoiceBillMappingDOS.stream().collect(Collectors.toMap(InvoiceBillMappingDO::getOrderId, Function.identity(), (x, y) -> x)); |
513 | List<InvoiceOrderBaseItemVO> itemVOS = getInvoiceOrderBaseItems(invoiceBillOrderDOMap); | 513 | List<InvoiceOrderBaseItemVO> itemVOS = getInvoiceOrderBaseItems(invoiceBillOrderDOMap); |
514 | //第一版,上面为第二版 List<InvoiceOrderBaseItemVO> itemVOS = getInvoiceOrderBaseItems(orderBillMap); | 514 | //第一版,上面为第二版 List<InvoiceOrderBaseItemVO> itemVOS = getInvoiceOrderBaseItems(orderBillMap); |
515 | - Map<String, InvoiceBillOrderDO> invoiceBillMap = invoiceBillOrderDOS.stream().collect(Collectors.toMap(InvoiceBillOrderDO::getInvoiceNo, Function.identity(), (x, y) -> x)); | 515 | + //这里出问题了。 |
516 | +// Map<String, InvoiceBillOrderDO> invoiceBillMap = invoiceBillOrderDOS.stream().collect(Collectors.toMap(InvoiceBillOrderDO::getInvoiceNo, Function.identity(), (x, y) -> x)); | ||
517 | + /* Map<String, InvoiceBillOrderDO> invoiceBillMap = invoiceBillOrderDOS.stream() | ||
518 | + .collect(Collectors.toMap( | ||
519 | + InvoiceBillOrderDO::getInvoiceNo, // 按 invoiceNo 作为键 | ||
520 | + Function.identity(), // 值是当前对象 | ||
521 | + (x, y) -> { | ||
522 | + // 在这里进行属性累加 | ||
523 | + x.setDeductAmount(x.getDeductAmount().add(y.getDeductAmount())); | ||
524 | + x.setOtherAmount(x.getOtherAmount().add(y.getOtherAmount())); | ||
525 | + x.setActualPayedAmount1(x.getActualPayedAmount1().add(y.getActualPayedAmount1())); | ||
526 | + x.setActualPayedAmount2(x.getActualPayedAmount2().add(y.getActualPayedAmount2())); | ||
527 | + x.setActualPayedAmount3(x.getActualPayedAmount3().add(y.getActualPayedAmount3())); | ||
528 | + x.setTotalCustomerAmount(x.getTotalCustomerAmount().add(y.getTotalCustomerAmount())); | ||
529 | + // 可以根据需要累加更多属性 | ||
530 | + return x; // 返回累加后的对象 | ||
531 | + } | ||
532 | + ));*/ | ||
533 | + Map<String, InvoiceBillOrderDO> invoiceBillMap = invoiceBillOrderDOS.stream() | ||
534 | + .collect(Collectors.toMap( | ||
535 | + InvoiceBillOrderDO::getInvoiceNo, // 按 invoiceNo 作为键 | ||
536 | + Function.identity(), // 值是当前对象 | ||
537 | + (x, y) -> { | ||
538 | + // 在这里进行属性累加,确保避免空指针异常 | ||
539 | + x.setDeductAmount( | ||
540 | + Optional.ofNullable(x.getDeductAmount()).orElse(BigDecimal.ZERO) | ||
541 | + .add(Optional.ofNullable(y.getDeductAmount()).orElse(BigDecimal.ZERO)) | ||
542 | + ); | ||
543 | + x.setOtherAmount( | ||
544 | + Optional.ofNullable(x.getOtherAmount()).orElse(BigDecimal.ZERO) | ||
545 | + .add(Optional.ofNullable(y.getOtherAmount()).orElse(BigDecimal.ZERO)) | ||
546 | + ); | ||
547 | + x.setActualPayedAmount1( | ||
548 | + Optional.ofNullable(x.getActualPayedAmount1()).orElse(BigDecimal.ZERO) | ||
549 | + .add(Optional.ofNullable(y.getActualPayedAmount1()).orElse(BigDecimal.ZERO)) | ||
550 | + ); | ||
551 | + x.setActualPayedAmount2( | ||
552 | + Optional.ofNullable(x.getActualPayedAmount2()).orElse(BigDecimal.ZERO) | ||
553 | + .add(Optional.ofNullable(y.getActualPayedAmount2()).orElse(BigDecimal.ZERO)) | ||
554 | + ); | ||
555 | + x.setActualPayedAmount3( | ||
556 | + Optional.ofNullable(x.getActualPayedAmount3()).orElse(BigDecimal.ZERO) | ||
557 | + .add(Optional.ofNullable(y.getActualPayedAmount3()).orElse(BigDecimal.ZERO)) | ||
558 | + ); | ||
559 | + x.setTotalCustomerAmount( | ||
560 | + Optional.ofNullable(x.getTotalCustomerAmount()).orElse(BigDecimal.ZERO) | ||
561 | + .add(Optional.ofNullable(y.getTotalCustomerAmount()).orElse(BigDecimal.ZERO)) | ||
562 | + ); | ||
563 | + // 可以根据需要累加更多属性 | ||
564 | + return x; // 返回累加后的对象 | ||
565 | + } | ||
566 | + )); | ||
516 | Map<String, List<InvoiceOrderBaseItemVO>> baseItemMap = itemVOS.stream().collect(Collectors.groupingBy(InvoiceOrderBaseItemVO::getInvoiceCode)); | 567 | Map<String, List<InvoiceOrderBaseItemVO>> baseItemMap = itemVOS.stream().collect(Collectors.groupingBy(InvoiceOrderBaseItemVO::getInvoiceCode)); |
517 | List<InvoiceBillAnalysisExportVO> exportVOS = wrapperAnalysisExport(invoiceBillMap, baseItemMap); | 568 | List<InvoiceBillAnalysisExportVO> exportVOS = wrapperAnalysisExport(invoiceBillMap, baseItemMap); |
518 | return wrapperAnalysisResultVO(exportVOS); | 569 | return wrapperAnalysisResultVO(exportVOS); |
@@ -804,7 +855,9 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | @@ -804,7 +855,9 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | ||
804 | List<InvoiceBillOrderDO> invoiceBillOrderDOList = buildInvoiceBillOrderDO(createVO,orderBaseInfoDOList); | 855 | List<InvoiceBillOrderDO> invoiceBillOrderDOList = buildInvoiceBillOrderDO(createVO,orderBaseInfoDOList); |
805 | 856 | ||
806 | List<OrderBaseInfoDO> containInvoiceOrderBaseInfoList=orderBaseInfoDOList.stream().map(x->{ | 857 | List<OrderBaseInfoDO> containInvoiceOrderBaseInfoList=orderBaseInfoDOList.stream().map(x->{ |
858 | + //是否删除invocie?没必要! 设置invocieStatus状态。 | ||
807 | x.setInvoiceNo(createVO.getInvoiceNo()); | 859 | x.setInvoiceNo(createVO.getInvoiceNo()); |
860 | + x.setInvoiceStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()); | ||
808 | return x; | 861 | return x; |
809 | }).collect(Collectors.toList()); | 862 | }).collect(Collectors.toList()); |
810 | 863 |
src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
@@ -1500,6 +1500,8 @@ end | @@ -1500,6 +1500,8 @@ end | ||
1500 | .in(CollectionUtils.isNotEmpty(queryVO.getOrderIds()), OrderBaseInfoDO::getId, queryVO.getOrderIds()) | 1500 | .in(CollectionUtils.isNotEmpty(queryVO.getOrderIds()), OrderBaseInfoDO::getId, queryVO.getOrderIds()) |
1501 | .in(CollectionUtils.isNotEmpty(queryVO.getInvoiceNo()),OrderBaseInfoDO::getInvoiceNo,queryVO.getInvoiceNo()) | 1501 | .in(CollectionUtils.isNotEmpty(queryVO.getInvoiceNo()),OrderBaseInfoDO::getInvoiceNo,queryVO.getInvoiceNo()) |
1502 | .in(CollectionUtils.isNotEmpty(queryVO.getCheckNo()),OrderBaseInfoDO::getCheckNo,queryVO.getCheckNo()) | 1502 | .in(CollectionUtils.isNotEmpty(queryVO.getCheckNo()),OrderBaseInfoDO::getCheckNo,queryVO.getCheckNo()) |
1503 | + .eq(Objects.nonNull(queryVO.getInvoiceStatus()), OrderBaseInfoDO::getInvoiceStatus, queryVO.getInvoiceStatus()) | ||
1504 | + .eq(Objects.nonNull(queryVO.getCheckNoStatus()), OrderBaseInfoDO::getCheckStatus, queryVO.getCheckNoStatus()) | ||
1503 | .orderByDesc(OrderBaseInfoDO::getId) | 1505 | .orderByDesc(OrderBaseInfoDO::getId) |
1504 | ; | 1506 | ; |
1505 | } | 1507 | } |
src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
@@ -15,6 +15,7 @@ import com.order.erp.common.constant.ServerResult; | @@ -15,6 +15,7 @@ import com.order.erp.common.constant.ServerResult; | ||
15 | import com.order.erp.common.constant.ServerResultCode; | 15 | import com.order.erp.common.constant.ServerResultCode; |
16 | import com.order.erp.common.exception.BusinessException; | 16 | import com.order.erp.common.exception.BusinessException; |
17 | import com.order.erp.common.utils.OrderFieldUtils; | 17 | import com.order.erp.common.utils.OrderFieldUtils; |
18 | +import com.order.erp.common.utils.TransactionHelper; | ||
18 | import com.order.erp.config.DataScope; | 19 | import com.order.erp.config.DataScope; |
19 | import com.order.erp.domain.*; | 20 | import com.order.erp.domain.*; |
20 | import com.order.erp.domain.dto.BaseDO; | 21 | import com.order.erp.domain.dto.BaseDO; |
@@ -74,9 +75,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -74,9 +75,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
74 | @Resource | 75 | @Resource |
75 | private ProducePaymentCheckBillOrderService checkBillOrderService; | 76 | private ProducePaymentCheckBillOrderService checkBillOrderService; |
76 | @Resource | 77 | @Resource |
77 | - private InvoiceBillMappingService invoiceBillMappingService; | ||
78 | - @Resource | ||
79 | - private CheckBillMappingService checkBillMappingService; | 78 | + private TransactionHelper transactionHelper; |
80 | 79 | ||
81 | /** | 80 | /** |
82 | * 通过ID查询单条数据 | 81 | * 通过ID查询单条数据 |
@@ -201,11 +200,11 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -201,11 +200,11 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
201 | }//这里结束 上述为待审核列表中应收款要显示内部编码。*/ //这部分不需要了。 | 200 | }//这里结束 上述为待审核列表中应收款要显示内部编码。*/ //这部分不需要了。 |
202 | //这部分的目的是,对于跟单员和业务员他们也能查看到应收款和应付款中各自负责订单的审核情况。 而财务和admin则会执行else{},会看到所有的审核订单信息。 | 201 | //这部分的目的是,对于跟单员和业务员他们也能查看到应收款和应付款中各自负责订单的审核情况。 而财务和admin则会执行else{},会看到所有的审核订单信息。 |
203 | if(RoleEnum.BUSINESS_USER.getCode().equals(roleEnum.getCode())){ | 202 | if(RoleEnum.BUSINESS_USER.getCode().equals(roleEnum.getCode())){ |
204 | - if(Objects.nonNull(orderLockFieldVO.getCheckBillOrderDO()) && orderLockFieldVO.getCheckBillOrderDO().getBusinesPerson().equals(loginUserName)){ | 203 | + if(Objects.nonNull(orderLockFieldVO.getProducePaymentCheckBillFieldVO()) && orderLockFieldVO.getProducePaymentCheckBillFieldVO().getBusinesPerson().equals(loginUserName)){ |
205 | resultVO.setFieldInfos(JSONObject.parseObject(fields, OrderLockFieldVO.class)); | 204 | resultVO.setFieldInfos(JSONObject.parseObject(fields, OrderLockFieldVO.class)); |
206 | } | 205 | } |
207 | } else if (RoleEnum.TRACKER_USER.getCode().equals(roleEnum.getCode())) { | 206 | } else if (RoleEnum.TRACKER_USER.getCode().equals(roleEnum.getCode())) { |
208 | - if(Objects.nonNull(orderLockFieldVO.getCheckBillOrderDO()) && orderLockFieldVO.getCheckBillOrderDO().getTrackerUser().equals(loginUserName)){ | 207 | + if(Objects.nonNull(orderLockFieldVO.getProducePaymentCheckBillFieldVO()) && orderLockFieldVO.getProducePaymentCheckBillFieldVO().getTrackerUser().equals(loginUserName)){ |
209 | resultVO.setFieldInfos(JSONObject.parseObject(fields, OrderLockFieldVO.class)); | 208 | resultVO.setFieldInfos(JSONObject.parseObject(fields, OrderLockFieldVO.class)); |
210 | } | 209 | } |
211 | } else{ | 210 | } else{ |
@@ -445,7 +444,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -445,7 +444,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
445 | ); | 444 | ); |
446 | } | 445 | } |
447 | }else{ | 446 | }else{ |
448 | - if(Objects.nonNull(queryVO.getType()) && queryVO.getType().equals(ApplyTypeEnum.CHECK_BILL_APPLY.getType())){ | 447 | + if(Objects.nonNull(queryVO.getType()) && queryVO.getType().equals(ApplyTypeEnum.INVOICE_BILL_APPLY.getType())){ |
449 | queryWrapper.eq(Objects.nonNull(queryVO.getType()), OrderFieldLockApplyDO::getType, queryVO.getType()); | 448 | queryWrapper.eq(Objects.nonNull(queryVO.getType()), OrderFieldLockApplyDO::getType, queryVO.getType()); |
450 | //这个内部编号单独针对于应付款申请设置的。 | 449 | //这个内部编号单独针对于应付款申请设置的。 |
451 | if(CollectionUtils.isNotEmpty(queryVO.getInnerNo())){ | 450 | if(CollectionUtils.isNotEmpty(queryVO.getInnerNo())){ |
@@ -581,7 +580,20 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -581,7 +580,20 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
581 | x.setStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()); | 580 | x.setStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()); |
582 | return x; | 581 | return x; |
583 | }).collect(Collectors.toList()); | 582 | }).collect(Collectors.toList()); |
584 | - invoiceBillOrderService.updateBatchById(invoiceBillOrderDOS); | 583 | + //写这里 |
584 | + List<Long> orderIdList = invoiceBillOrderDOS.stream() | ||
585 | + .filter(Objects::nonNull) | ||
586 | + .map(InvoiceBillOrderDO::getOrderId) | ||
587 | + .collect(Collectors.toList()); | ||
588 | + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(orderIdList); | ||
589 | + List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoDOList.stream().filter(Objects::nonNull).map(x -> { | ||
590 | + x.setInvoiceStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()); | ||
591 | + return x; | ||
592 | + }).collect(Collectors.toList()); | ||
593 | + transactionHelper.run(() -> { | ||
594 | + orderBaseInfoService.updateBatchById(orderBaseInfoDOS); | ||
595 | + invoiceBillOrderService.updateBatchById(invoiceBillOrderDOS); | ||
596 | + }); | ||
585 | } | 597 | } |
586 | } else if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(applyDO.getType())) { | 598 | } else if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(applyDO.getType())) { |
587 | OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); | 599 | OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); |
@@ -593,7 +605,19 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -593,7 +605,19 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
593 | x.setStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()); | 605 | x.setStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()); |
594 | return x; | 606 | return x; |
595 | }).collect(Collectors.toList()); | 607 | }).collect(Collectors.toList()); |
596 | - checkBillOrderService.updateBatchById(producePaymentCheckBillOrderDOS); | 608 | + List<Long> orderIdList = producePaymentCheckBillOrderDOS.stream() |
609 | + .filter(Objects::nonNull) | ||
610 | + .map(ProducePaymentCheckBillOrderDO::getOrderId) | ||
611 | + .collect(Collectors.toList()); | ||
612 | + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(orderIdList); | ||
613 | + List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoDOList.stream().filter(Objects::nonNull).map(x -> { | ||
614 | + x.setCheckStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()); | ||
615 | + return x; | ||
616 | + }).collect(Collectors.toList()); | ||
617 | + transactionHelper.run(() -> { | ||
618 | + orderBaseInfoService.updateBatchById(orderBaseInfoDOS); | ||
619 | + checkBillOrderService.updateBatchById(producePaymentCheckBillOrderDOS); | ||
620 | + }); | ||
597 | } | 621 | } |
598 | 622 | ||
599 | } else if(ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())){ | 623 | } else if(ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())){ |
@@ -752,7 +776,19 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -752,7 +776,19 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
752 | x.setStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); | 776 | x.setStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); |
753 | return x; | 777 | return x; |
754 | }).collect(Collectors.toList()); | 778 | }).collect(Collectors.toList()); |
755 | - invoiceBillOrderService.updateBatchById(invoiceeBillOrderDOs); | 779 | + List<Long> orderIdList = invoiceBillOrderDOS.stream() |
780 | + .filter(Objects::nonNull) | ||
781 | + .map(InvoiceBillOrderDO::getOrderId) | ||
782 | + .collect(Collectors.toList()); | ||
783 | + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(orderIdList); | ||
784 | + List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoDOList.stream().filter(Objects::nonNull).map(x -> { | ||
785 | + x.setInvoiceStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); | ||
786 | + return x; | ||
787 | + }).collect(Collectors.toList()); | ||
788 | + transactionHelper.run(() -> { | ||
789 | + orderBaseInfoService.updateBatchById(orderBaseInfoDOS); | ||
790 | + invoiceBillOrderService.updateBatchById(invoiceeBillOrderDOs); | ||
791 | + }); | ||
756 | } | 792 | } |
757 | } else if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(applyDO.getType())) { | 793 | } else if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(applyDO.getType())) { |
758 | applyDO.setAuditUserId(auditUserId); | 794 | applyDO.setAuditUserId(auditUserId); |
@@ -766,7 +802,19 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -766,7 +802,19 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
766 | x.setStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); | 802 | x.setStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); |
767 | return x; | 803 | return x; |
768 | }).collect(Collectors.toList()); | 804 | }).collect(Collectors.toList()); |
769 | - checkBillOrderService.updateBatchById(producePaymentCheckBillOrderDOS); | 805 | + List<Long> orderIdList = checkBillOrderDOS.stream() |
806 | + .filter(Objects::nonNull) | ||
807 | + .map(ProducePaymentCheckBillOrderDO::getOrderId) | ||
808 | + .collect(Collectors.toList()); | ||
809 | + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(orderIdList); | ||
810 | + List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoDOList.stream().filter(Objects::nonNull).map(x -> { | ||
811 | + x.setCheckStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); | ||
812 | + return x; | ||
813 | + }).collect(Collectors.toList()); | ||
814 | + transactionHelper.run(() ->{ | ||
815 | + orderBaseInfoService.updateBatchById(orderBaseInfoDOS); | ||
816 | + checkBillOrderService.updateBatchById(producePaymentCheckBillOrderDOS); | ||
817 | + }); | ||
770 | } | 818 | } |
771 | } else if (ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())) { | 819 | } else if (ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())) { |
772 | applyDO.setAuditUserId(auditUserId); | 820 | applyDO.setAuditUserId(auditUserId); |
src/main/java/com/order/erp/service/order/impl/ProducePaymentCheckBillOrderServiceImpl.java
@@ -171,8 +171,43 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | @@ -171,8 +171,43 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | ||
171 | }*/ | 171 | }*/ |
172 | Map<Long, ProducePaymentCheckBillOrderDO> orderBillMap = checkBillOrderDOS.stream().collect(Collectors.toMap(ProducePaymentCheckBillOrderDO::getOrderId, Function.identity(), (x, y) -> x)); | 172 | Map<Long, ProducePaymentCheckBillOrderDO> orderBillMap = checkBillOrderDOS.stream().collect(Collectors.toMap(ProducePaymentCheckBillOrderDO::getOrderId, Function.identity(), (x, y) -> x)); |
173 | // Map<Long, CheckBillMappingDO> orderBillMap = checkBillMappingDOS.stream().collect(Collectors.toMap(CheckBillMappingDO::getOrderId, Function.identity(), (x, y) -> x)); | 173 | // Map<Long, CheckBillMappingDO> orderBillMap = checkBillMappingDOS.stream().collect(Collectors.toMap(CheckBillMappingDO::getOrderId, Function.identity(), (x, y) -> x)); |
174 | + | ||
174 | List<CheckOrderBaseItemVO> itemVOS = getCheckOrderBaseItems(orderBillMap); | 175 | List<CheckOrderBaseItemVO> itemVOS = getCheckOrderBaseItems(orderBillMap); |
175 | - Map<String, ProducePaymentCheckBillOrderDO> checkBillOrderDOMap = checkBillOrderDOS.stream().collect(Collectors.toMap(ProducePaymentCheckBillOrderDO::getCheckNo, Function.identity(), (x, y) -> x)); | 176 | +// Map<String, ProducePaymentCheckBillOrderDO> checkBillOrderDOMap = checkBillOrderDOS.stream().collect(Collectors.toMap(ProducePaymentCheckBillOrderDO::getCheckNo, Function.identity(), (x, y) -> x)); |
177 | + Map<String, ProducePaymentCheckBillOrderDO> checkBillOrderDOMap = checkBillOrderDOS.stream() | ||
178 | + .collect(Collectors.toMap( | ||
179 | + ProducePaymentCheckBillOrderDO::getCheckNo, // 按 invoiceNo 作为键 | ||
180 | + Function.identity(), // 值是当前对象 | ||
181 | + (x, y) -> { | ||
182 | + // 在这里进行属性累加,确保避免空指针异常 | ||
183 | + x.setDeductAmount( | ||
184 | + Optional.ofNullable(x.getDeductAmount()).orElse(BigDecimal.ZERO) | ||
185 | + .add(Optional.ofNullable(y.getDeductAmount()).orElse(BigDecimal.ZERO)) | ||
186 | + ); | ||
187 | + x.setActualPayedAmount1( | ||
188 | + Optional.ofNullable(x.getActualPayedAmount1()).orElse(BigDecimal.ZERO) | ||
189 | + .add(Optional.ofNullable(y.getActualPayedAmount1()).orElse(BigDecimal.ZERO)) | ||
190 | + ); | ||
191 | + x.setActualPayedAmount2( | ||
192 | + Optional.ofNullable(x.getActualPayedAmount2()).orElse(BigDecimal.ZERO) | ||
193 | + .add(Optional.ofNullable(y.getActualPayedAmount2()).orElse(BigDecimal.ZERO)) | ||
194 | + ); | ||
195 | + x.setActualPayedAmount3( | ||
196 | + Optional.ofNullable(x.getActualPayedAmount3()).orElse(BigDecimal.ZERO) | ||
197 | + .add(Optional.ofNullable(y.getActualPayedAmount3()).orElse(BigDecimal.ZERO)) | ||
198 | + ); | ||
199 | + x.setTotalProductionAmount( | ||
200 | + Optional.ofNullable(x.getTotalProductionAmount()).orElse(BigDecimal.ZERO) | ||
201 | + .add(Optional.ofNullable(y.getTotalProductionAmount()).orElse(BigDecimal.ZERO)) | ||
202 | + ); | ||
203 | + x.setTotalActualPayedAmount( | ||
204 | + Optional.ofNullable(x.getTotalActualPayedAmount()).orElse(BigDecimal.ZERO) | ||
205 | + .add(Optional.ofNullable(y.getTotalActualPayedAmount()).orElse(BigDecimal.ZERO)) | ||
206 | + ); | ||
207 | + // 可以根据需要累加更多属性 | ||
208 | + return x; // 返回累加后的对象 | ||
209 | + } | ||
210 | + )); | ||
176 | Map<String, List<CheckOrderBaseItemVO>> baseItemMap = itemVOS.stream().collect(Collectors.groupingBy(CheckOrderBaseItemVO::getCheckNo)); | 211 | Map<String, List<CheckOrderBaseItemVO>> baseItemMap = itemVOS.stream().collect(Collectors.groupingBy(CheckOrderBaseItemVO::getCheckNo)); |
177 | List<CheckBillAnalysisExportVO> exportVOS = wrapperAnalysisExport(checkBillOrderDOMap, baseItemMap); | 212 | List<CheckBillAnalysisExportVO> exportVOS = wrapperAnalysisExport(checkBillOrderDOMap, baseItemMap); |
178 | return wrapperAnalysisResultVO(exportVOS); | 213 | return wrapperAnalysisResultVO(exportVOS); |
@@ -280,7 +315,8 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | @@ -280,7 +315,8 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | ||
280 | CheckBillAnalysisExportVO exportVO = new CheckBillAnalysisExportVO(); | 315 | CheckBillAnalysisExportVO exportVO = new CheckBillAnalysisExportVO(); |
281 | BeanUtils.copyProperties(checkBillOrderDO, exportVO); | 316 | BeanUtils.copyProperties(checkBillOrderDO, exportVO); |
282 | // 应付 | 317 | // 应付 |
283 | - BigDecimal actualPayedAmount = Objects.nonNull(checkBillOrderDO.getActualPayedAmount()) ? checkBillOrderDO.getActualPayedAmount() : new BigDecimal(Constant.ZERO); | 318 | +// BigDecimal actualPayedAmount = Objects.nonNull(checkBillOrderDO.getActualPayedAmount()) ? checkBillOrderDO.getActualPayedAmount() : new BigDecimal(Constant.ZERO); |
319 | + BigDecimal actualPayedAmount = (Objects.nonNull(checkBillOrderDO.getTotalProductionAmount()) ? checkBillOrderDO.getTotalProductionAmount() : new BigDecimal(Constant.ZERO)); | ||
284 | BigDecimal deductAmount = Objects.nonNull(checkBillOrderDO.getDeductAmount()) ? checkBillOrderDO.getDeductAmount() : new BigDecimal(Constant.ZERO); | 320 | BigDecimal deductAmount = Objects.nonNull(checkBillOrderDO.getDeductAmount()) ? checkBillOrderDO.getDeductAmount() : new BigDecimal(Constant.ZERO); |
285 | BigDecimal totalActualPayedAmount = Objects.nonNull(checkBillOrderDO.getTotalActualPayedAmount()) ? checkBillOrderDO.getTotalActualPayedAmount() : new BigDecimal(Constant.ZERO); | 321 | BigDecimal totalActualPayedAmount = Objects.nonNull(checkBillOrderDO.getTotalActualPayedAmount()) ? checkBillOrderDO.getTotalActualPayedAmount() : new BigDecimal(Constant.ZERO); |
286 | // 返回 实付 | 322 | // 返回 实付 |
@@ -289,9 +325,9 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | @@ -289,9 +325,9 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | ||
289 | //第二版 可删 应付减去实付 | 325 | //第二版 可删 应付减去实付 |
290 | BigDecimal calculateActualPayedAmount = actualPayedAmount.subtract(totalActualPayedAmount); | 326 | BigDecimal calculateActualPayedAmount = actualPayedAmount.subtract(totalActualPayedAmount); |
291 | //返回应付 | 327 | //返回应付 |
292 | - exportVO.setCalculateActualPayedAmount(actualPayedAmount.setScale(2, RoundingMode.HALF_UP)); | 328 | + exportVO.setCalculateActualPayedAmount((actualPayedAmount.subtract(deductAmount)).setScale(2, RoundingMode.HALF_UP)); |
293 | // 返回未付 | 329 | // 返回未付 |
294 | - exportVO.setUnPayedAmount(calculateActualPayedAmount.setScale(2, RoundingMode.HALF_UP)); | 330 | + exportVO.setUnPayedAmount((exportVO.getCalculateActualPayedAmount().subtract(exportVO.getActualPayedAmount())).setScale(2, RoundingMode.HALF_UP)); |
295 | //保留小数点后两位。 | 331 | //保留小数点后两位。 |
296 | exportVO.setDeductAmount(exportVO.getDeductAmount().setScale(2, RoundingMode.HALF_UP)); | 332 | exportVO.setDeductAmount(exportVO.getDeductAmount().setScale(2, RoundingMode.HALF_UP)); |
297 | return exportVO; | 333 | return exportVO; |
@@ -544,7 +580,9 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | @@ -544,7 +580,9 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | ||
544 | 580 | ||
545 | List<ProducePaymentCheckBillOrderDO> checkBillOrderDOList = buildCheckBillOrderDO(createVO,orderBaseInfoDOList); | 581 | List<ProducePaymentCheckBillOrderDO> checkBillOrderDOList = buildCheckBillOrderDO(createVO,orderBaseInfoDOList); |
546 | List<OrderBaseInfoDO> containCheckOrderBaseInfoList = orderBaseInfoDOList.stream().map(x -> { | 582 | List<OrderBaseInfoDO> containCheckOrderBaseInfoList = orderBaseInfoDOList.stream().map(x -> { |
583 | + //是否删除check?没必要! 设置checkStatus状态。 | ||
547 | x.setCheckNo(createVO.getCheckNo()); | 584 | x.setCheckNo(createVO.getCheckNo()); |
585 | + x.setCheckStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()); | ||
548 | return x; | 586 | return x; |
549 | }).collect(Collectors.toList()); | 587 | }).collect(Collectors.toList()); |
550 | 588 |
src/main/resources/mapper/InvoiceBillOrderMapper.xml
@@ -128,10 +128,10 @@ | @@ -128,10 +128,10 @@ | ||
128 | AND p.check_no = #{queryVO.checkNo} | 128 | AND p.check_no = #{queryVO.checkNo} |
129 | </if> | 129 | </if> |
130 | <if test="queryVO.invoiceStatus != null"> | 130 | <if test="queryVO.invoiceStatus != null"> |
131 | - AND i.status = #{queryVO.invoiceStatus} | 131 | + AND o.invoice_status = #{queryVO.invoiceStatus} |
132 | </if> | 132 | </if> |
133 | <if test="queryVO.checkNoStatus != null"> | 133 | <if test="queryVO.checkNoStatus != null"> |
134 | - AND p.status = #{queryVO.checkNoStatus} | 134 | + AND o.check_status = #{queryVO.checkNoStatus} |
135 | </if> | 135 | </if> |
136 | <if test="queryVO.customerCode != null and queryVO.customerCode != ''"> | 136 | <if test="queryVO.customerCode != null and queryVO.customerCode != ''"> |
137 | AND o.customer_code = #{queryVO.customerCode} | 137 | AND o.customer_code = #{queryVO.customerCode} |