diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxBillController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxBillController.java index 1394ec472..29e4b6a96 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxBillController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxBillController.java @@ -268,7 +268,7 @@ public class WxBillController extends BaseController { if (null == billdetail) { return new ResultData(Result.ERROR,"账单支付未查询到"); } - BigDecimal owe = new BigDecimal(billdetail.getOwe()); + BigDecimal owe = new BigDecimal(billdetail.getBillAllNeedPay()); if (owe.compareTo(new BigDecimal(payMoney)) < 0) { return new ResultData(Result.ERROR,"支付金额大于欠费金额,请刷新账单后再支付"); } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillDaily.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillDaily.java index b16d15153..d2593a636 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillDaily.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillDaily.java @@ -132,5 +132,15 @@ public class WxBillDaily extends WxBillBaseEntity { @Override public String getBillRemark() { return remark; - } + } + + @Override + public String getBillLatePay() { + return "0"; + } + + @Override + public String getBillServicePay() { + return serviceChargePay; + } } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillDeposit.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillDeposit.java index 46d889a88..f76d22ada 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillDeposit.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillDeposit.java @@ -95,4 +95,14 @@ public class WxBillDeposit extends WxBillBaseEntity { public String getBillRemark() { return ""; } + + @Override + public String getBillLatePay() { + return "0"; + } + + @Override + public String getBillServicePay() { + return serviceChargePay; + } } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillOther.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillOther.java index aaf050714..088c0c24d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillOther.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillOther.java @@ -125,4 +125,14 @@ public class WxBillOther extends WxBillBaseEntity { public String getBillRemark() { return StringUtils.trimToEmpty(name)+StringUtils.trimToEmpty(comments); } + + @Override + public String getBillLatePay() { + return "0"; + } + + @Override + public String getBillServicePay() { + return serviceChargePay; + } } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillOtherDeposit.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillOtherDeposit.java index e916e0c47..759befe84 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillOtherDeposit.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillOtherDeposit.java @@ -134,5 +134,15 @@ public class WxBillOtherDeposit extends WxBillBaseEntity { public String getBillRemark() { return StringUtils.trimToEmpty(name)+StringUtils.trimToEmpty(comments); } + + @Override + public String getBillLatePay() { + return "0"; + } + + @Override + public String getBillServicePay() { + return serviceChargePay; + } } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java index b2d840d66..42440e8c5 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java @@ -160,6 +160,16 @@ public class WxBillProperty extends WxBillBaseEntity { return ""; } + @Override + public String getBillLatePay() { + return latePayPrice; + } + + @Override + public String getBillServicePay() { + return serviceChargePay; + } + @TableField(exist = false) private String totalFee; public void calcuteTotalFee(Integer decimalSize) { diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillPropertyDeposit.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillPropertyDeposit.java index a6db972d0..38d738686 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillPropertyDeposit.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillPropertyDeposit.java @@ -109,4 +109,14 @@ public class WxBillPropertyDeposit extends WxBillBaseEntity { return ""; } + @Override + public String getBillLatePay() { + return "0"; + } + + @Override + public String getBillServicePay() { + return serviceChargePay; + } + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillRent.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillRent.java index 9201e39f5..85c778765 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillRent.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillRent.java @@ -102,6 +102,16 @@ public class WxBillRent extends WxBillBaseEntity { public String getBillRemark() { return ""; } + + @Override + public String getBillLatePay() { + return latePayPrice; + } + + @Override + public String getBillServicePay() { + return serviceChargePay; + } @io.swagger.annotations.ApiModelProperty(value="商业管理费应收金额",name="bussinessManageFeeNeedPay") private String bussinessManageFeeNeedPay; @@ -217,4 +227,6 @@ public class WxBillRent extends WxBillBaseEntity { .setScale(decimalSize, RoundingMode.HALF_UP).toPlainString(); } + + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillRentManage.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillRentManage.java index 3f0c1cb0e..296d5d36f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillRentManage.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillRentManage.java @@ -173,6 +173,16 @@ public class WxBillRentManage extends WxBillBaseEntity { return ""; } + @Override + public String getBillLatePay() { + return latePayPrice; + } + + @Override + public String getBillServicePay() { + return serviceChargePay; + } + @TableField(exist = false) private List merchantIds; @TableField(exist = false) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/base/WxBillBaseEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/base/WxBillBaseEntity.java index fd537d1a1..60e9ea22e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/base/WxBillBaseEntity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/base/WxBillBaseEntity.java @@ -104,6 +104,28 @@ public class WxBillBaseEntity extends TenantEntity { @TableField(exist = false) protected Long floor; + //滞纳金 + @TableField(exist = false) + protected String billLatePay; + //服务费 + @TableField(exist = false) + protected String billServicePay; + + @TableField(exist = false) + protected String billAllNeedPay; + + public String getBillAllNeedPay() { + String bl = this.getBillLatePay(); + String bs = this.getBillServicePay(); + if (StringUtils.isBlank(bl)) { + bl = "0"; + } + if (StringUtils.isBlank(bs)) { + bs = "0"; + } + return new BigDecimal(getOwe()).add(new BigDecimal(bl)).add(new BigDecimal(bs)).toPlainString(); + } + @TableField(exist = false) protected List merchantIdList; @@ -125,5 +147,7 @@ public class WxBillBaseEntity extends TenantEntity { //临期计算截止时间 @TableField(exist = false) private Integer notifyed; + + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillDailyServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillDailyServiceImpl.java index 50df51051..2df72de71 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillDailyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillDailyServiceImpl.java @@ -529,15 +529,57 @@ public class WxBillDailyServiceImpl extends WxBillBaseService implements WxBillD if (StringUtils.isNotBlank(dbBill.getPay())) { opay = new BigDecimal(dbBill.getPay()); } - opay = opay.add(new BigDecimal(dto.getAddpay())); - wxBillRent.setPay(opay.toPlainString()); - if (opay.compareTo(new BigDecimal(dbBill.getReceivePay())) >= 0 ) { - wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); - dto.setRemark(StringUtils.trimToEmpty(dto.getRemark())+ ";【系统】账单已付金额调整后已大于等于实际应付金额,自动归结为结清。"); + + //支付的金额先扣除手续费和滞纳金,多余的再抵扣本金 + String servicePay = dbBill.getServiceChargePay(); + if (StringUtils.isBlank(servicePay)) { + servicePay = "0"; + } + StringBuffer sb = new StringBuffer(StringUtils.trimToEmpty(dto.getRemark())); + BigDecimal serviceLastMoney = new BigDecimal(dto.getAddpay()).subtract(new BigDecimal(servicePay)); + if (new BigDecimal(servicePay).compareTo(new BigDecimal(0)) > 0 ) { + if (serviceLastMoney.compareTo(new BigDecimal(0)) >= 0 ) { + wxBillRent.setServiceChargePay("0"); + sb.append(";手续费").append(servicePay).append("已结清"); + }else { + wxBillRent.setServiceChargePay(dto.getAddpay()); + sb.append(";手续费").append(servicePay).append("已支付").append(dto.getAddpay()); + } } + + BigDecimal latePayLastMoney = new BigDecimal(0); + if (serviceLastMoney.compareTo(new BigDecimal(0)) > 0 ) { + String latePay = dbBill.getLatePayPrice(); + if (StringUtils.isBlank(latePay)) { + latePay = "0"; + } + latePayLastMoney = serviceLastMoney.subtract(new BigDecimal(latePay)); + if (new BigDecimal(latePay).compareTo(new BigDecimal(0)) > 0 ) { + if (latePayLastMoney.compareTo(new BigDecimal(0)) >= 0 ) { + wxBillRent.setLatePayPrice("0"); + sb.append(";滞纳金").append(latePay).append("已结清"); + }else { + String lp = new BigDecimal(latePay).subtract(serviceLastMoney).toPlainString(); + wxBillRent.setLatePayPrice(lp); + sb.append(";滞纳金").append(latePay).append("已支付").append(lp); + } + } + } + + if (latePayLastMoney.compareTo(new BigDecimal(0)) > 0 ) { + opay = opay.add(latePayLastMoney); + wxBillRent.setPay(opay.toPlainString()); + sb.append(";已付金额增加").append(latePayLastMoney.toPlainString()); + if (opay.compareTo(new BigDecimal(dbBill.getReceivePay())) >= 0 ) { + wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); + sb.append(";【系统】账单已付金额已大于等于实际应付金额,自动归结为结清。"); + } + } + wxBillRent.setPayDate(new Date()); wxBillRent.setPayWay(dto.getPayWay()); wxBillDailyMapper.updateById(wxBillRent); + dto.setRemark(sb.toString()); return wxBillRent; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillDepositServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillDepositServiceImpl.java index ff2ba9607..9e406b8d5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillDepositServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillDepositServiceImpl.java @@ -486,15 +486,38 @@ public class WxBillDepositServiceImpl extends WxBillBaseService implements WxBil if (StringUtils.isNotBlank(dbBill.getPay())) { opay = new BigDecimal(dbBill.getPay()); } - opay = opay.add(new BigDecimal(dto.getAddpay())); - wxBillRent.setPay(opay.toPlainString()); - if (opay.compareTo(new BigDecimal(dbBill.getReceivePay())) >= 0 ) { - wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); - dto.setRemark(StringUtils.trimToEmpty(dto.getRemark())+ ";【系统】账单已付金额调整后已大于等于实际应付金额,自动归结为结清。"); + + //支付的金额先扣除手续费和滞纳金,多余的再抵扣本金 + String servicePay = dbBill.getServiceChargePay(); + if (StringUtils.isBlank(servicePay)) { + servicePay = "0"; + } + StringBuffer sb = new StringBuffer(StringUtils.trimToEmpty(dto.getRemark())); + BigDecimal serviceLastMoney = new BigDecimal(dto.getAddpay()).subtract(new BigDecimal(servicePay)); + if (new BigDecimal(servicePay).compareTo(new BigDecimal(0)) > 0 ) { + if (serviceLastMoney.compareTo(new BigDecimal(0)) >= 0 ) { + wxBillRent.setServiceChargePay("0"); + sb.append(";手续费").append(servicePay).append("已结清"); + }else { + wxBillRent.setServiceChargePay(dto.getAddpay()); + sb.append(";手续费").append(servicePay).append("已支付").append(dto.getAddpay()); + } } + + if (serviceLastMoney.compareTo(new BigDecimal(0)) > 0 ) { + opay = opay.add(serviceLastMoney); + wxBillRent.setPay(opay.toPlainString()); + sb.append(";已付金额增加").append(serviceLastMoney.toPlainString()); + if (opay.compareTo(new BigDecimal(dbBill.getReceivePay())) >= 0 ) { + wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); + sb.append(";【系统】账单已付金额已大于等于实际应付金额,自动归结为结清。"); + } + } + wxBillRent.setPayDate(new Date()); wxBillRent.setPayWay(dto.getPayWay()); wxBillDepositMapper.updateById(wxBillRent); + dto.setRemark(sb.toString()); return wxBillRent; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillOtherDepositServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillOtherDepositServiceImpl.java index 7d969543a..c3b4b858d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillOtherDepositServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillOtherDepositServiceImpl.java @@ -488,15 +488,38 @@ public class WxBillOtherDepositServiceImpl extends WxBillBaseService implements if (StringUtils.isNotBlank(dbBill.getPay())) { opay = new BigDecimal(dbBill.getPay()); } - opay = opay.add(new BigDecimal(dto.getAddpay())); - wxBillRent.setPay(opay.toPlainString()); - if (opay.compareTo(new BigDecimal(dbBill.getReceivePay())) >= 0 ) { - wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); - dto.setRemark(StringUtils.trimToEmpty(dto.getRemark())+ ";【系统】账单已付金额调整后已大于等于实际应付金额,自动归结为结清。"); + + //支付的金额先扣除手续费和滞纳金,多余的再抵扣本金 + String servicePay = dbBill.getServiceChargePay(); + if (StringUtils.isBlank(servicePay)) { + servicePay = "0"; } + StringBuffer sb = new StringBuffer(StringUtils.trimToEmpty(dto.getRemark())); + BigDecimal serviceLastMoney = new BigDecimal(dto.getAddpay()).subtract(new BigDecimal(servicePay)); + if (new BigDecimal(servicePay).compareTo(new BigDecimal(0)) > 0 ) { + if (serviceLastMoney.compareTo(new BigDecimal(0)) >= 0 ) { + wxBillRent.setServiceChargePay("0"); + sb.append(";手续费").append(servicePay).append("已结清"); + }else { + wxBillRent.setServiceChargePay(dto.getAddpay()); + sb.append(";手续费").append(servicePay).append("已支付").append(dto.getAddpay()); + } + } + + if (serviceLastMoney.compareTo(new BigDecimal(0)) > 0 ) { + opay = opay.add(serviceLastMoney); + wxBillRent.setPay(opay.toPlainString()); + sb.append(";已付金额增加").append(serviceLastMoney.toPlainString()); + if (opay.compareTo(new BigDecimal(dbBill.getReceivePay())) >= 0 ) { + wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); + sb.append(";【系统】账单已付金额已大于等于实际应付金额,自动归结为结清。"); + } + } + wxBillRent.setPayDate(new Date()); wxBillRent.setPayWay(dto.getPayWay()); wxBillOtherDepositMapper.updateById(wxBillRent); + dto.setRemark(sb.toString()); return wxBillRent; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillOtherServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillOtherServiceImpl.java index 4c69751e5..a8bf5534a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillOtherServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillOtherServiceImpl.java @@ -433,15 +433,37 @@ public class WxBillOtherServiceImpl extends WxBillBaseService implements WxBillO if (StringUtils.isNotBlank(dbBill.getPay())) { opay = new BigDecimal(dbBill.getPay()); } - opay = opay.add(new BigDecimal(dto.getAddpay())); - wxBillRent.setPay(opay.toPlainString()); - if (opay.compareTo(new BigDecimal(dbBill.getReceivePay())) >= 0 ) { - wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); - dto.setRemark(StringUtils.trimToEmpty(dto.getRemark())+ ";【系统】账单已付金额调整后已大于等于实际应付金额,自动归结为结清。"); + //支付的金额先扣除手续费和滞纳金,多余的再抵扣本金 + String servicePay = dbBill.getServiceChargePay(); + if (StringUtils.isBlank(servicePay)) { + servicePay = "0"; } + StringBuffer sb = new StringBuffer(StringUtils.trimToEmpty(dto.getRemark())); + BigDecimal serviceLastMoney = new BigDecimal(dto.getAddpay()).subtract(new BigDecimal(servicePay)); + if (new BigDecimal(servicePay).compareTo(new BigDecimal(0)) > 0 ) { + if (serviceLastMoney.compareTo(new BigDecimal(0)) >= 0 ) { + wxBillRent.setServiceChargePay("0"); + sb.append(";手续费").append(servicePay).append("已结清"); + }else { + wxBillRent.setServiceChargePay(dto.getAddpay()); + sb.append(";手续费").append(servicePay).append("已支付").append(dto.getAddpay()); + } + } + + if (serviceLastMoney.compareTo(new BigDecimal(0)) > 0 ) { + opay = opay.add(serviceLastMoney); + wxBillRent.setPay(opay.toPlainString()); + sb.append(";已付金额增加").append(serviceLastMoney.toPlainString()); + if (opay.compareTo(new BigDecimal(dbBill.getReceivePay())) >= 0 ) { + wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); + sb.append(";【系统】账单已付金额已大于等于实际应付金额,自动归结为结清。"); + } + } + wxBillRent.setPayDate(new Date()); wxBillRent.setPayWay(dto.getPayWay()); wxBillOtherMapper.updateById(wxBillRent); + dto.setRemark(sb.toString()); return wxBillRent; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillPropertyDepositServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillPropertyDepositServiceImpl.java index 4be2b9ddf..e987d525f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillPropertyDepositServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillPropertyDepositServiceImpl.java @@ -466,15 +466,37 @@ public class WxBillPropertyDepositServiceImpl extends WxBillBaseService implemen if (StringUtils.isNotBlank(dbBill.getPay())) { opay = new BigDecimal(dbBill.getPay()); } - opay = opay.add(new BigDecimal(dto.getAddpay())); - wxBillRent.setPay(opay.toPlainString()); - if (opay.compareTo(new BigDecimal(dbBill.getReceivePay())) >= 0 ) { - wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); - dto.setRemark(StringUtils.trimToEmpty(dto.getRemark())+ ";【系统】账单已付金额调整后已大于等于实际应付金额,自动归结为结清。"); + + //支付的金额先扣除手续费和滞纳金,多余的再抵扣本金 + String servicePay = dbBill.getServiceChargePay(); + if (StringUtils.isBlank(servicePay)) { + servicePay = "0"; + } + StringBuffer sb = new StringBuffer(StringUtils.trimToEmpty(dto.getRemark())); + BigDecimal serviceLastMoney = new BigDecimal(dto.getAddpay()).subtract(new BigDecimal(servicePay)); + if (new BigDecimal(servicePay).compareTo(new BigDecimal(0)) > 0 ) { + if (serviceLastMoney.compareTo(new BigDecimal(0)) >= 0 ) { + wxBillRent.setServiceChargePay("0"); + sb.append(";手续费").append(servicePay).append("已结清"); + }else { + wxBillRent.setServiceChargePay(dto.getAddpay()); + sb.append(";手续费").append(servicePay).append("已支付").append(dto.getAddpay()); + } + } + + if (serviceLastMoney.compareTo(new BigDecimal(0)) > 0 ) { + opay = opay.add(serviceLastMoney); + wxBillRent.setPay(opay.toPlainString()); + sb.append(";已付金额增加").append(serviceLastMoney.toPlainString()); + if (opay.compareTo(new BigDecimal(dbBill.getReceivePay())) >= 0 ) { + wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); + sb.append(";【系统】账单已付金额已大于等于实际应付金额,自动归结为结清。"); + } } wxBillRent.setPayDate(new Date()); wxBillRent.setPayWay(dto.getPayWay()); wxBillPropertyDepositMapper.updateById(wxBillRent); + dto.setRemark(sb.toString()); return wxBillRent; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillPropertyServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillPropertyServiceImpl.java index 930b217d3..f7713bb7b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillPropertyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillPropertyServiceImpl.java @@ -555,15 +555,56 @@ public class WxBillPropertyServiceImpl extends WxBillBaseService implements WxBi if (StringUtils.isNotBlank(dbBill.getPay())) { opay = new BigDecimal(dbBill.getPay()); } - opay = opay.add(new BigDecimal(dto.getAddpay())); - wxBillRent.setPay(opay.toPlainString()); - if (opay.compareTo(new BigDecimal(dbBill.getReceivePay())) >= 0 ) { - wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); - dto.setRemark(StringUtils.trimToEmpty(dto.getRemark())+ ";【系统】账单已付金额调整后已大于等于实际应付金额,自动归结为结清。"); + + //支付的金额先扣除手续费和滞纳金,多余的再抵扣本金 + String servicePay = dbBill.getServiceChargePay(); + if (StringUtils.isBlank(servicePay)) { + servicePay = "0"; + } + StringBuffer sb = new StringBuffer(StringUtils.trimToEmpty(dto.getRemark())); + BigDecimal serviceLastMoney = new BigDecimal(dto.getAddpay()).subtract(new BigDecimal(servicePay)); + if (new BigDecimal(servicePay).compareTo(new BigDecimal(0)) > 0 ) { + if (serviceLastMoney.compareTo(new BigDecimal(0)) >= 0 ) { + wxBillRent.setServiceChargePay("0"); + sb.append(";手续费").append(servicePay).append("已结清"); + }else { + wxBillRent.setServiceChargePay(dto.getAddpay()); + sb.append(";手续费").append(servicePay).append("已支付").append(dto.getAddpay()); + } + } + + BigDecimal latePayLastMoney = new BigDecimal(0); + if (serviceLastMoney.compareTo(new BigDecimal(0)) > 0 ) { + String latePay = dbBill.getLatePayPrice(); + if (StringUtils.isBlank(latePay)) { + latePay = "0"; + } + latePayLastMoney = serviceLastMoney.subtract(new BigDecimal(latePay)); + if (new BigDecimal(latePay).compareTo(new BigDecimal(0)) > 0 ) { + if (latePayLastMoney.compareTo(new BigDecimal(0)) >= 0 ) { + wxBillRent.setLatePayPrice("0"); + sb.append(";滞纳金").append(latePay).append("已结清"); + }else { + String lp = new BigDecimal(latePay).subtract(serviceLastMoney).toPlainString(); + wxBillRent.setLatePayPrice(lp); + sb.append(";滞纳金").append(latePay).append("已支付").append(lp); + } + } + } + + if (latePayLastMoney.compareTo(new BigDecimal(0)) > 0 ) { + opay = opay.add(latePayLastMoney); + wxBillRent.setPay(opay.toPlainString()); + sb.append(";已付金额增加").append(latePayLastMoney.toPlainString()); + if (opay.compareTo(new BigDecimal(dbBill.getReceivePay())) >= 0 ) { + wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); + sb.append(";【系统】账单已付金额已大于等于实际应付金额,自动归结为结清。"); + } } wxBillRent.setPayDate(new Date()); wxBillRent.setPayWay(dto.getPayWay()); wxBillPropertyMapper.updateById(wxBillRent); + dto.setRemark(sb.toString()); return wxBillRent; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentManageServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentManageServiceImpl.java index 313849f0e..d64744211 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentManageServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentManageServiceImpl.java @@ -484,15 +484,57 @@ public class WxBillRentManageServiceImpl extends WxBillBaseService implements W if (StringUtils.isNotBlank(dbBill.getPay())) { opay = new BigDecimal(dbBill.getPay()); } - opay = opay.add(new BigDecimal(dto.getAddpay())); - wxBillRent.setPay(opay.toPlainString()); - if (opay.compareTo(new BigDecimal(dbBill.getReceivePay())) >= 0 ) { - wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); - dto.setRemark(StringUtils.trimToEmpty(dto.getRemark())+ ";【系统】账单已付金额调整后已大于等于实际应付金额,自动归结为结清。"); + + //支付的金额先扣除手续费和滞纳金,多余的再抵扣本金 + String servicePay = dbBill.getServiceChargePay(); + if (StringUtils.isBlank(servicePay)) { + servicePay = "0"; } + StringBuffer sb = new StringBuffer(StringUtils.trimToEmpty(dto.getRemark())); + BigDecimal serviceLastMoney = new BigDecimal(dto.getAddpay()).subtract(new BigDecimal(servicePay)); + if (new BigDecimal(servicePay).compareTo(new BigDecimal(0)) > 0 ) { + if (serviceLastMoney.compareTo(new BigDecimal(0)) >= 0 ) { + wxBillRent.setServiceChargePay("0"); + sb.append(";手续费").append(servicePay).append("已结清"); + }else { + wxBillRent.setServiceChargePay(dto.getAddpay()); + sb.append(";手续费").append(servicePay).append("已支付").append(dto.getAddpay()); + } + } + + BigDecimal latePayLastMoney = new BigDecimal(0); + if (serviceLastMoney.compareTo(new BigDecimal(0)) > 0 ) { + String latePay = dbBill.getLatePayPrice(); + if (StringUtils.isBlank(latePay)) { + latePay = "0"; + } + latePayLastMoney = serviceLastMoney.subtract(new BigDecimal(latePay)); + if (new BigDecimal(latePay).compareTo(new BigDecimal(0)) > 0 ) { + if (latePayLastMoney.compareTo(new BigDecimal(0)) >= 0 ) { + wxBillRent.setLatePayPrice("0"); + sb.append(";滞纳金").append(latePay).append("已结清"); + }else { + String lp = new BigDecimal(latePay).subtract(serviceLastMoney).toPlainString(); + wxBillRent.setLatePayPrice(lp); + sb.append(";滞纳金").append(latePay).append("已支付").append(lp); + } + } + } + + if (latePayLastMoney.compareTo(new BigDecimal(0)) > 0 ) { + opay = opay.add(latePayLastMoney); + wxBillRent.setPay(opay.toPlainString()); + sb.append(";已付金额增加").append(latePayLastMoney.toPlainString()); + if (opay.compareTo(new BigDecimal(dbBill.getReceivePay())) >= 0 ) { + wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); + sb.append(";【系统】账单已付金额已大于等于实际应付金额,自动归结为结清。"); + } + } + wxBillRent.setPayDate(new Date()); wxBillRent.setPayWay(dto.getPayWay()); wxBillRentManageMapper.updateById(wxBillRent); + dto.setRemark(sb.toString()); return wxBillRent; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java index 2779013bf..a0c4ba5fc 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java @@ -649,15 +649,56 @@ public class WxBillRentServiceImpl extends WxBillBaseService implements WxBillRe if (StringUtils.isNotBlank(dbBill.getPay())) { opay = new BigDecimal(dbBill.getPay()); } - opay = opay.add(new BigDecimal(dto.getAddpay())); - wxBillRent.setPay(opay.toPlainString()); - if (opay.compareTo(new BigDecimal(dbBill.getReceivePay())) >= 0 ) { - wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); - dto.setRemark(StringUtils.trimToEmpty(dto.getRemark())+ ";【系统】账单已付金额调整后已大于等于实际应付金额,自动归结为结清。"); + //支付的金额先扣除手续费和滞纳金,多余的再抵扣本金 + String servicePay = dbBill.getServiceChargePay(); + if (StringUtils.isBlank(servicePay)) { + servicePay = "0"; } + StringBuffer sb = new StringBuffer(StringUtils.trimToEmpty(dto.getRemark())); + BigDecimal serviceLastMoney = new BigDecimal(dto.getAddpay()).subtract(new BigDecimal(servicePay)); + if (new BigDecimal(servicePay).compareTo(new BigDecimal(0)) > 0 ) { + if (serviceLastMoney.compareTo(new BigDecimal(0)) >= 0 ) { + wxBillRent.setServiceChargePay("0"); + sb.append(";手续费").append(servicePay).append("已结清"); + }else { + wxBillRent.setServiceChargePay(dto.getAddpay()); + sb.append(";手续费").append(servicePay).append("已支付").append(dto.getAddpay()); + } + } + + BigDecimal latePayLastMoney = new BigDecimal(0); + if (serviceLastMoney.compareTo(new BigDecimal(0)) > 0 ) { + String latePay = dbBill.getLatePayPrice(); + if (StringUtils.isBlank(latePay)) { + latePay = "0"; + } + latePayLastMoney = serviceLastMoney.subtract(new BigDecimal(latePay)); + if (new BigDecimal(latePay).compareTo(new BigDecimal(0)) > 0 ) { + if (latePayLastMoney.compareTo(new BigDecimal(0)) >= 0 ) { + wxBillRent.setLatePayPrice("0"); + sb.append(";滞纳金").append(latePay).append("已结清"); + }else { + String lp = new BigDecimal(latePay).subtract(serviceLastMoney).toPlainString(); + wxBillRent.setLatePayPrice(lp); + sb.append(";滞纳金").append(latePay).append("已支付").append(lp); + } + } + } + + if (latePayLastMoney.compareTo(new BigDecimal(0)) > 0 ) { + opay = opay.add(latePayLastMoney); + wxBillRent.setPay(opay.toPlainString()); + sb.append(";已付金额增加").append(latePayLastMoney.toPlainString()); + if (opay.compareTo(new BigDecimal(dbBill.getReceivePay())) >= 0 ) { + wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); + sb.append(";【系统】账单已付金额已大于等于实际应付金额,自动归结为结清。"); + } + } + wxBillRent.setPayDate(new Date()); wxBillRent.setPayWay(dto.getPayWay()); wxBillRentMapper.updateById(wxBillRent); + dto.setRemark(sb.toString()); return wxBillRent; }