소스 검색

fix:修改支付逻辑

ly 9 달 전
부모
커밋
980525a321

+ 2 - 0
src/main/java/cn/ezhizao/project/business/order/domain/BizArchiveInputDetail.java

@@ -123,6 +123,8 @@ public class BizArchiveInputDetail extends BaseEntity
     @TableField(exist = false)
     private BigDecimal payment;
     @TableField(exist = false)
+    private BigDecimal reviewAmount;
+    @TableField(exist = false)
     private BigDecimal reallyAmount;
     @ApiModelProperty("所属区")
     private Integer belongRegion;

+ 46 - 8
src/main/java/cn/ezhizao/project/business/payment/controller/BizPaymentController.java

@@ -258,19 +258,34 @@ public class BizPaymentController extends BaseController {
                 detail.setReallyAmount(bigDecimal);
             }
         }
+        contractDetailAmount(contractId, list);
+        contractDetailViewAmount(contractId, list);
+        return getDataTable(list);
+    }
+    private void contractDetailViewAmount(Long contractId, List<BizArchiveInputDetail> list) {
         List<BizPayment> paymentList = paymentService.list(new LambdaQueryWrapper<BizPayment>()
                 .eq(BizPayment::getContractId, contractId)
-                        .and(item ->
-                        item.eq(BizPayment::getPaymentStatus,0)
-                        .or()
-                        .eq(BizPayment::getPaymentStatus,1)
-                        .or()
+                .and(item->item
                         .eq(BizPayment::getVerifyStatus,0)
                         .or()
                         .eq(BizPayment::getVerifyStatus,1)
                         .or()
                         .eq(BizPayment::getVerifyStatus,3)
-                        ));
+                ));
+        List<Long> idList = paymentList.stream().map(m -> m.getId()).collect(Collectors.toList());
+        if (idList.size() > 0) {
+            List<BizPaymentDetail> bizPaymentDetailList = paymentDetailService.list(new LambdaQueryWrapper<BizPaymentDetail>().in(BizPaymentDetail::getPaymentId, idList));
+            Map<Long, BigDecimal> taskTypeToTotalAmount = bizPaymentDetailList.stream()
+                    .collect(Collectors.groupingBy(BizPaymentDetail::getTaskTypeId,
+                            Collectors.reducing(BigDecimal.ZERO, BizPaymentDetail::getPaymentAmount, BigDecimal::add)));
+            for (BizArchiveInputDetail detail : list) {
+                BigDecimal bigDecimal = taskTypeToTotalAmount.get(detail.getTaskTypeId());
+                detail.setReviewAmount(bigDecimal);
+            }
+        }
+    }
+    private void contractDetailAmount(Long contractId, List<BizArchiveInputDetail> list) {
+        List<BizPayment> paymentList = paymentService.list(new LambdaQueryWrapper<BizPayment>().eq(BizPayment::getContractId, contractId).eq(BizPayment::getPaymentStatus, 1).eq(BizPayment::getVerifyStatus, 3));
         List<Long> idList = paymentList.stream().map(m -> m.getId()).collect(Collectors.toList());
         if (idList.size() > 0) {
             List<BizPaymentDetail> bizPaymentDetailList = paymentDetailService.list(new LambdaQueryWrapper<BizPaymentDetail>().in(BizPaymentDetail::getPaymentId, idList));
@@ -282,7 +297,6 @@ public class BizPaymentController extends BaseController {
                 detail.setPayment(bigDecimal);
             }
         }
-        return getDataTable(list);
     }
 
 
@@ -363,6 +377,7 @@ public class BizPaymentController extends BaseController {
             payment.setDetails(details);
             totalAmountPaid(payment, details);
             totalAmountReceived(payment, details);
+            totalAmountReview(payment, details);
         }
         return payment;
     }
@@ -399,7 +414,30 @@ public class BizPaymentController extends BaseController {
         }
         //-------
     }
-
+    private void totalAmountReview(BizPayment payment, List<BizPaymentDetail> details) {
+        //-------所有审核状态全部通过的金额加上未审核金额
+        List<BizPayment> list = paymentService.list(new LambdaQueryWrapper<BizPayment>()
+                .eq(BizPayment::getContractId, payment.getContractId())
+                .and(item->item
+                        .eq(BizPayment::getVerifyStatus,0)
+                        .or()
+                        .eq(BizPayment::getVerifyStatus,1)
+                        .or()
+                        .eq(BizPayment::getVerifyStatus,3)
+                ));
+        List<Long> idList = list.stream().map(m -> m.getId()).collect(Collectors.toList());
+        if (idList.size() > 0) {
+            List<BizPaymentDetail> bizPaymentDetailList = paymentDetailService.list(new LambdaQueryWrapper<BizPaymentDetail>().in(BizPaymentDetail::getPaymentId, idList));
+            Map<Long, BigDecimal> taskTypeToTotalAmount = bizPaymentDetailList.stream()
+                    .collect(Collectors.groupingBy(BizPaymentDetail::getTaskTypeId,
+                            Collectors.reducing(BigDecimal.ZERO, BizPaymentDetail::getPaymentAmount, BigDecimal::add)));
+            for (BizPaymentDetail detail : details) {
+                BigDecimal bigDecimal = taskTypeToTotalAmount.get(detail.getTaskTypeId());
+                detail.setReviewAmount(bigDecimal);
+            }
+        }
+        //-------
+    }
     @ApiOperation("审核")
     @PostMapping("/verified")
     @Log(title = "支付审核", businessType = BusinessType.UPDATE)

+ 2 - 0
src/main/java/cn/ezhizao/project/business/payment/domain/BizPaymentDetail.java

@@ -106,4 +106,6 @@ public class BizPaymentDetail extends BaseEntity {
 
     @TableField(exist = false)
     private String inputRemark;
+    @TableField(exist = false)
+    private BigDecimal reviewAmount;
 }