xda %!s(int64=2) %!d(string=hai) anos
pai
achega
9676fe3548

+ 2 - 2
src/main/java/com/winhc/repal/model/dto/UpdateRepalBillDTO.java

@@ -28,8 +28,8 @@ public class UpdateRepalBillDTO {
     @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate endDate;
 
-    @ApiModelProperty(value = "账款总应收金额string")
-    private BigDecimal receivable;
+    @ApiModelProperty(value = "账款总金额string, totalMoney")
+    private BigDecimal totalMoney;
 
     @ApiModelProperty(value = "账款阶段,1未起诉,2已起诉,3已申请执行,4终结本次执行")
     private Integer repalBillStage;

+ 17 - 12
src/main/java/com/winhc/repal/service/impl/RepalBillServiceImpl.java

@@ -635,24 +635,30 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
                 }
             }
         }
-        if (LocalDate.now().isAfter(dto.getEndDate())) {
-            // 逾期
-            repalBill.setRepalBillStatus(RepalBillStatusEnum.OVERDUE.getCode());
-        }
+
         // 改金额三种状态
+        if (Objects.isNull(dto.getTotalMoney())) {
+            throw new CommonException(CodeMsg.FAILED, "账款金额不能为空");
+        }
+        if (dto.getTotalMoney().compareTo(repalBill.getReceipt()) < 0) {
+            String typeStr = RepalBillTypeEnum.RECEIVABLE.getCode().equals(repalBill.getRepalBillType()) ? "收" : "付";
+            throw new CommonException(CodeMsg.FAILED, "应" + typeStr + "金额不能小于已" + typeStr + "款");
+        }
         boolean sendFlag = false;
-        if (dto.getReceivable().compareTo(BigDecimal.ZERO) == 0) {
+        if (dto.getTotalMoney().compareTo(repalBill.getReceipt()) == 0) {
             repalBill.setTotalMoney(repalBill.getReceipt());
+            repalBill.setReceivable(BigDecimal.ZERO);
             repalBill.setRepalBillStatus(RepalBillStatusEnum.SUCCESS.getCode());
             sendFlag = true;
+        } else if (dto.getTotalMoney().compareTo(repalBill.getReceipt()) > 0) {
+            repalBill.setTotalMoney(dto.getTotalMoney());
+            repalBill.setReceivable(dto.getTotalMoney().subtract(repalBill.getReceipt()));
         }
-        if (dto.getReceivable().compareTo(repalBill.getReceivable()) > 0) {
-            repalBill.setTotalMoney(repalBill.getTotalMoney().add(dto.getReceivable().subtract(repalBill.getReceivable())));
-        }
-        if (dto.getReceivable().compareTo(repalBill.getReceivable()) < 0) {
-            repalBill.setTotalMoney(repalBill.getTotalMoney().subtract(repalBill.getReceivable().subtract(dto.getReceivable())));
+        if (LocalDate.now().isAfter(dto.getEndDate()) && repalBill.getReceivable().compareTo(BigDecimal.ZERO) > 0) {
+            // 日期 && 应收 > 0
+            repalBill.setRepalBillStatus(RepalBillStatusEnum.OVERDUE.getCode());
         }
-        repalBill.setReceivable(dto.getReceivable());
+
         this.update(Wrappers.lambdaUpdate(RepalBill.class)
                 .eq(RepalBill::getId, repalBill.getId())
                 .set(RepalBill::getEndDate, dto.getEndDate())
@@ -661,7 +667,6 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
                 .set(RepalBill::getBillRemark, dto.getBillRemark())
                 .set(RepalBill::getTotalMoney, repalBill.getTotalMoney())
                 .set(RepalBill::getReceivable, repalBill.getReceivable())
-                .set(RepalBill::getReceipt, repalBill.getReceipt())
                 .set(RepalBill::getContractName, dto.getContractName())
                 .set(RepalBill::getContractEndDate, dto.getContractEndDate())
                 .set(RepalBill::getContractUrl, String.join( ";", dto.getContractUrlList()))