diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxAllBillController.java b/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxAllBillController.java index bc3828d4c..34058ccb2 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxAllBillController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxAllBillController.java @@ -633,6 +633,7 @@ public class WxAllBillController extends BillBaseController { if (null == wxMerchant.getId()) { return new ResultData(Result.ERROR,"请选择商户"); } + wxMerchant.setIsPreview(EnumYesOrNo.NO.getCode()); wxMerchant.updateTenantInfo(getTenantInfo()); wxMerchant.setNeedPayPreDays(getNearBillBeforeDays()); List list = billAllHelper.getMerchantBillList(wxMerchant); @@ -671,6 +672,7 @@ public class WxAllBillController extends BillBaseController { if (null == wxMerchant.getId()) { return new ResultData(Result.ERROR,"请选择商户"); } + wxMerchant.setIsPreview(EnumYesOrNo.NO.getCode()); wxMerchant.updateTenantInfo(getTenantInfo()); wxMerchant.setToPayMerchant(EnumYesOrNo.YES.getCode()); List list = billAllHelper.getMerchantBillList(wxMerchant); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeter.java b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeter.java index 5d02f5a2e..98eb6e43e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeter.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeter.java @@ -3,6 +3,8 @@ package com.iformall.domain.po; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumEnergyMeterType; + import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; @@ -36,6 +38,15 @@ public class WxEnergyMeter extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "表类型EnumEnergyMeterType", name = "type") private Integer type; + @TableField(exist = false) + private String typeName; + public String getTypeName() { + if (null != type) { + return EnumEnergyMeterType.getEnum(type).getMessage(); + } + return null; + } + @io.swagger.annotations.ApiModelProperty(value="倍率",name="rate") private String rate; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceReceive.java b/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceReceive.java index 56c4cc4f9..2be653253 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceReceive.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceReceive.java @@ -151,5 +151,7 @@ public class WxFinanceReceive extends TenantEntity { private Integer finishStatus; @TableField(exist = false) private Long finishId; + @TableField(exist = false) + private Integer hasExtraMoney; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java index 5e660c336..96e2a1b7d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java @@ -338,12 +338,24 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill } } + BigDecimal remainSetoff = new BigDecimal(dto.getSetOff()); if (latePayLastMoney.compareTo(new BigDecimal(0)) > 0 ) { opay = opay.add(latePayLastMoney); - wxBillRent.setPay(opay.toPlainString()); - //如果付款金额做了扣除手续费/滞纳金,则需要将本金抵扣写到备注 - if (new BigDecimal(dto.getAddpay()).compareTo(latePayLastMoney) > 0 ) { - sb.append(";已付金额增加").append(latePayLastMoney.toPlainString()); + //如果手续费+滞纳金未消耗到实际收款 + BigDecimal pay = new BigDecimal(dto.getAddpay()); + if (latePayLastMoney.compareTo(pay) >= 0 ) { + if (pay.compareTo(new BigDecimal(0)) > 0 ) { + wxBillRent.setPay(pay.toPlainString()); + sb.append(";已付金额增加").append(new BigDecimal(dto.getAddpay()).toPlainString()); + //实际应收的抵扣 + //remainSetoff = remainSetoff.subtract(latePayLastMoney.subtract(new BigDecimal(dto.getAddpay()))); + } + }else { + if (pay.compareTo(new BigDecimal(0)) > 0 ) { + BigDecimal remainPay = new BigDecimal(dto.getAddpay()).subtract(latePayLastMoney); + wxBillRent.setPay(remainPay.toPlainString()); + sb.append(";已付金额增加").append(remainPay.toPlainString()); + } } if (opay.compareTo(new BigDecimal(dbBill.getOwe())) >= 0 ) { wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); @@ -354,7 +366,7 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill if (StringUtils.isBlank(oldSetOff)) { oldSetOff = "0"; } - wxBillRent.setSetOff(new BigDecimal(oldSetOff).add(new BigDecimal(dto.getSetOff())).toPlainString()); + wxBillRent.setSetOff(new BigDecimal(oldSetOff).add(remainSetoff).toPlainString()); wxBillRent.setPayDate(new Date()); wxBillRent.setPayWay(dto.getPayWayObject().getId()); wxAllBillMapper.updateById(wxBillRent); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java index dc72fbe2f..4408ceccc 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java @@ -255,7 +255,11 @@ public class WxFinanceServiceImpl implements WxFinanceService { } return sum.getAdvanceList(); }else { + faq.setType(EnumFinanceCashierType.RECEIVE.getCode()); + faq.setReceiveType(EnumFinanceReceiveType.ADVANCE.getCode()); + faq.setStatus(EnumFinanceReceiveStatus.NORMAL.getCode()); faq.setSortColumns(SortField.CreateTime_ASC); + faq.setHasExtraMoney(EnumYesOrNo.YES.getCode()); return wxFinanceReceiveMapper.findList(faq); } @@ -273,6 +277,10 @@ public class WxFinanceServiceImpl implements WxFinanceService { }else { List setoffList = bill.getSetOffDetailList(); for (int j = calcuteDto.getCurrentIndex(); j < calcuteDto.getAdvanceList().size() ; j++) { + owe = new BigDecimal(bill.getOwe()); + if (owe.compareTo(b0) <= 0) { + break; + } WxFinanceReceive advance = calcuteDto.getAdvanceList().get(j); BigDecimal remain = new BigDecimal(advance.getRemain()); if (remain.compareTo(b0) > 0) { @@ -282,7 +290,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { FinanceSetOffDetailVo dv = new FinanceSetOffDetailVo(); dv.setAdvanceId(advance.getId()); BigDecimal billSetOff = null;//账单历史抵扣 - if (StringUtils.isBlank(bill.getSetOff())) { + if (StringUtils.isNotBlank(bill.getSetOff())) { billSetOff = new BigDecimal(bill.getSetOff()); }else { billSetOff = b0; @@ -302,6 +310,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { dv.setSetoff(remain.toPlainString()); setoffList.add(dv); bill.setSetOffDetailList(setoffList); + calcuteDto.setCurrentIndex(calcuteDto.getCurrentIndex()+1); setSetOff(bill,calcuteDto); }else { bill.setSetOff(billSetOff.add(owe).toPlainString()); @@ -310,6 +319,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { dv.setSetoff(owe.toPlainString()); setoffList.add(dv); bill.setSetOffDetailList(setoffList); + break; } }else { calcuteDto.setCurrentIndex(calcuteDto.getCurrentIndex()+1); @@ -342,6 +352,9 @@ public class WxFinanceServiceImpl implements WxFinanceService { List retList = new ArrayList(); for (int i = 0 ; i < bills.size() ; i ++) { WxAllBill be = bills.get(i); + be.setSetOffDetailList(null); + be.setCurrentReceive(null); + be.setCurrentSetOff(null); WxAllBill bill = wxBillAllHelper.getBillDetail(EnumBillAllType.getEnum(be.getBillType()), merchant, be.getId()); be.setReceivePay(bill.getReceivePay()); be.setPay(bill.getPay()); @@ -658,6 +671,20 @@ public class WxFinanceServiceImpl implements WxFinanceService { createFinanceReceiveBill(addreceive,bill,be.getCurrentSetOff(),null,Constant.bill_pay_way_setoff); //处理预充关联 createFinanceReceiveSetoff(addreceive,be,bill); + WxBillPayDTO payDto = new WxBillPayDTO(); + payDto.updateTenantInfo(addreceive); + payDto.setId(be.getId()); + payDto.setBillTypeValue(be.getBillType()); + payDto.setAddpay("0"); + payDto.setSetOff(be.getCurrentSetOff()); + payDto.setPayWay(Constant.bill_pay_way_setoff); + if (null == payWay0) { + payWay0 = new WxBillPayWay(); + payWay0.setId(Constant.bill_pay_way_setoff); + } + payDto.setPayWayObject(payWay0); + payDto.setRemark("收款单收款["+addreceive.getId()+"]冲抵"+addreceive.getRemark()); + wxBillAllHelper.updatePay(payDto, user); } return noNeedCreate; } @@ -768,7 +795,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { sortBills(bills); //创建主收款单 - WxFinanceReceive addreceive = generateReceive(receiveId,user,EnumFinanceCashierType.PAY ,EnumFinanceReceiveType.RECEIVE, null,payTotal.toPlainString(), record.getMerchantId(), null, record.getRemark()); + WxFinanceReceive addreceive = generateReceive(receiveId,user,EnumFinanceCashierType.PAY ,EnumFinanceReceiveType.RECEIVE, "0",payTotal.toPlainString(), record.getMerchantId(), null, record.getRemark()); if (payTotal.compareTo(new BigDecimal(0)) > 0) { addreceive.setMoneyDetail(JSON.toJSONString(record.getPayWays())); wxFinanceReceivePaywayMapper.insertPayWays(record.getTenantId(),receivePayWayList); @@ -952,6 +979,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { rsq.updateTenantInfo(record); rsq.setBillId(bill.getId()); rsq.setBillType(bill.getBillType()); + rsq.setAdvanceId(rb.getReceiveId()); List setoffList = wxFinanceReceiveSetoffMapper.findList(rsq); if (null != setoffList) { for (int j = 0 ; j < setoffList.size() ; j ++) { diff --git a/mallinkService/src/main/resources/mapper/WxFinanceReceiveMapper.xml b/mallinkService/src/main/resources/mapper/WxFinanceReceiveMapper.xml index fa051b108..baac8ec2a 100644 --- a/mallinkService/src/main/resources/mapper/WxFinanceReceiveMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxFinanceReceiveMapper.xml @@ -54,6 +54,7 @@ and `is_print` = #{isPrint} and `is_finish` = #{isFinish} and `status` in (1,3) + and receive_money - IFNULL(use_money,'0') > 0 and merchant_id in