From 45d778567a99d730c522b9dbe7544a9813d4b477 Mon Sep 17 00:00:00 2001 From: winter Date: Tue, 20 Aug 2024 19:32:21 +0800 Subject: [PATCH] fix --- .../controller/rent/WxAllBillController.java | 3 +- .../sys/WxUserDataRuleController.java | 2 - .../com/iformall/domain/dto/WxBillPayDTO.java | 2 +- .../com/iformall/enums/EnumBillAction.java | 6 +- .../service/impl/WxAllBillServiceImpl.java | 36 +++--- .../service/impl/WxBillBaseService.java | 16 +-- .../service/impl/WxFinanceServiceImpl.java | 109 ++++++++++++++---- .../payBill/impl/PayBillBaseService.java | 3 +- 8 files changed, 123 insertions(+), 54 deletions(-) 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 360324e05..74e71aade 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxAllBillController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxAllBillController.java @@ -521,7 +521,8 @@ public class WxAllBillController extends BillBaseController { if (null == payWay) { return new ResultData(Result.ERROR,"支付方式未查询到"); } - dto.setPayWayObject(payWay); + dto.setPayWay(payWay.getId()); + dto.setPayWayName(payWay.getName()); billAllHelper.updatePay(dto, getUser()); return new ResultData(); //return wxBillAllService.updateReceivePay(wxBillAll, getUser(),false); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/sys/WxUserDataRuleController.java b/mallinkAdmin/src/main/java/com/iformall/controller/sys/WxUserDataRuleController.java index e09d4c252..a2333b0a5 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/sys/WxUserDataRuleController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/sys/WxUserDataRuleController.java @@ -39,7 +39,6 @@ public class WxUserDataRuleController extends BaseController { @ApiOperation("编辑") @PostMapping("/modify") - @SystemControllerLog(description = "用户数据权限-新增") public ResultData modify(@RequestBody WxUserDataRule wxUserDataRule) { logger.debug("[" + getIpAddr() + "] wxDataRuleTarget::modify"); MallUserInfo currentUser = getUser(); @@ -55,7 +54,6 @@ public class WxUserDataRuleController extends BaseController { @ApiOperation("根据用户ID查看") @GetMapping("/findByUserId") @ApiImplicitParam(name = "userId", value = "userId", dataType = "Long", paramType = "query", required = true) - @SystemControllerLog(description = "用户数据权限-根据用户ID查看") public ResultData findByUserId(Long userId) { logger.debug("[" + getIpAddr() + "] wxDataRuleTarget::modify"); WxUserDataRule wxUserDataRule = wxUserDataRuleService.findByUserId(userId); diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/WxBillPayDTO.java b/mallinkService/src/main/java/com/iformall/domain/dto/WxBillPayDTO.java index 41f963fa3..a0d93b818 100644 --- a/mallinkService/src/main/java/com/iformall/domain/dto/WxBillPayDTO.java +++ b/mallinkService/src/main/java/com/iformall/domain/dto/WxBillPayDTO.java @@ -17,8 +17,8 @@ public class WxBillPayDTO extends TenantEntity{ private String addpay;//支付金额 private String payToMerchant;//支付给商户金额 private String setOff="0";//冲抵金额 - private WxBillPayWay payWayObject;//支付方式 private Long payWay;//传值 + private String payWayName;//传值 private String remark; private String image; } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumBillAction.java b/mallinkService/src/main/java/com/iformall/enums/EnumBillAction.java index f72722058..58685c7a2 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumBillAction.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumBillAction.java @@ -46,18 +46,18 @@ public enum EnumBillAction { return message; } - public String getDescription(String oldMoney,String newMoney,String setoffMoney,WxBillPayWay payWay,EnumBillStatus oldStatus,EnumBillStatus newStatus) { + public String getDescription(String oldMoney,String newMoney,String setoffMoney,String payWay,EnumBillStatus oldStatus,EnumBillStatus newStatus) { StringBuffer sb = new StringBuffer("[").append(this.message).append("]"); if (code.intValue() == SELF_SERVICE_PAY.code.intValue()) { if (null != payWay) { - sb.append(payWay.getName()).append("支付"); + sb.append(payWay).append("支付"); } sb.append(newMoney).append("元"); }else if (code.intValue() == UPDATE_BILL.code.intValue()) { sb.append("应付金额").append(oldMoney).append("元变更成").append(newMoney).append("元"); }else if (code.intValue() == OFFLINE_PAY.code.intValue()) { if (null != payWay) { - sb.append(payWay.getName()).append("支付"); + sb.append(payWay).append("支付"); } sb.append(newMoney).append("元"); if (StringUtils.isNotBlank(setoffMoney) && new BigDecimal(setoffMoney).compareTo(new BigDecimal(0)) > 0 ) { 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 f722f5f36..dcc48d47a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java @@ -236,7 +236,7 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill wxBillRent.setLastOweCallUser(user.getName()+"(账号:"+user.getUsername()+")"); wxAllBillMapper.updateById(wxBillRent); this.addBillAction(EnumBillAction.NOTIFY, dto.getBillTypeValue(),dto.getId(), - null, null,null,null,null,dto.getRemark(),null,null, user); + null, null,null,null,null,null,dto.getRemark(),null,null, user); } @Override @@ -253,23 +253,25 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); wxAllBillMapper.updateById(wxBillRent); String remark = StringUtils.trimToEmpty(dto.getRemark())+ ";【系统】账单被强制为支付完成,自动归结为结清。"; - this.addBillAction(EnumBillAction.UPDATE_BILL, dto.getBillTypeValue(),dto.getId(), dbBill.getPay(), dbBill.getPay(),null,null,null,remark,null,null, user); + this.addBillAction(EnumBillAction.UPDATE_BILL, dto.getBillTypeValue(),dto.getId(), dbBill.getPay(), dbBill.getPay(),null,null,null,null,remark,null,null, user); }else { if (StringUtils.isNotBlank(dto.getOldLatePrice()) && StringUtils.isNotBlank(dto.getNewLatePrice())) { wxBillRent.setBillLatePay(dto.getNewLatePrice()); wxAllBillMapper.updateById(wxBillRent); this.addBillAction(EnumBillAction.UPDATE_LATE_PAY_MONEY, dto.getBillTypeValue(), dto.getId(), - dto.getOldLatePrice(), dto.getNewLatePrice(),null,null,null,dto.getRemark(),null,null, user); + dto.getOldLatePrice(), dto.getNewLatePrice(),null,null,null,null,dto.getRemark(),null,null, user); }else if (StringUtils.isNotBlank(dto.getServiceChargePayBefore()) && StringUtils.isNotBlank(dto.getServiceChargePayUpdate())) { wxBillRent.setServiceChargePay(dto.getServiceChargePayUpdate()); wxAllBillMapper.updateById(wxBillRent); this.addBillAction(EnumBillAction.UPDATE_SERVICE_MONEY, dto.getBillTypeValue(), dto.getId(), - dto.getServiceChargePayBefore(), dto.getServiceChargePayUpdate(),null,null,null,dto.getRemark(),null,null, user); + dto.getServiceChargePayBefore(), dto.getServiceChargePayUpdate(),null,null,null,null,dto.getRemark(),null,null, user); }else { //租赁账单更新 wxBillRent.setReceivePay(dto.getNewPrice()); Date payDate = null; WxBillPayWay payWay = null; + Long paywayId = null; + String paywayname = null; String remark = StringUtils.trimToEmpty(dto.getRemark()); if (new BigDecimal(dto.getNewPrice()).compareTo(new BigDecimal(dbBill.getPay())) <= 0) { wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); @@ -279,8 +281,12 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill } wxAllBillMapper.updateById(wxBillRent); //账单日志 + if (null != payWay) { + paywayId = payWay.getId(); + paywayname = payWay.getName(); + } this.addBillAction(EnumBillAction.UPDATE_BILL, dto.getBillTypeValue(),dto.getId(), - dto.getOldPrice(), dto.getNewPrice(),null,payDate,payWay,remark,null,null, user); + dto.getOldPrice(), dto.getNewPrice(),null,payDate,paywayId,paywayname,remark,null,null, user); } } } @@ -289,8 +295,9 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill public void updatePay(WxBillPayDTO dto, MallUserInfo user) { WxAllBill wxBillRent = updateBillPay(dto); EnumBillAction action = EnumBillAction.OFFLINE_PAY; - this.addBillAction(action, dto.getBillTypeValue(),dto.getId(), - dto.getAddpay(), dto.getAddpay(),dto.getSetOff(),wxBillRent.getPayDate(),dto.getPayWayObject(),dto.getRemark(),null,null, user); + this.addBillAction(action, dto.getBillTypeValue(),dto.getId(), dto.getAddpay(), dto.getAddpay(), + dto.getSetOff(),wxBillRent.getPayDate(),dto.getPayWay(),dto.getPayWayName(), + dto.getRemark(),null,null, user); } private WxAllBill updateBillPay(WxBillPayDTO dto) { @@ -369,7 +376,7 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill } wxBillRent.setSetOff(new BigDecimal(oldSetOff).add(remainSetoff).toPlainString()); wxBillRent.setPayDate(new Date()); - wxBillRent.setPayWay(dto.getPayWayObject().getId()); + wxBillRent.setPayWay(dto.getPayWay()); wxAllBillMapper.updateById(wxBillRent); dto.setRemark(sb.toString()); return wxBillRent; @@ -385,7 +392,8 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill action = EnumBillAction.OFFLINE_PAY; } this.addBillAction(action, dto.getBillTypeValue(),dto.getId(), - dto.getAddpay(), dto.getAddpay(),null,wxBillRent.getPayDate(),dto.getPayWayObject(),dto.getRemark(),null,null, user); + dto.getAddpay(), dto.getAddpay(),null,wxBillRent.getPayDate(),dto.getPayWay(),dto.getPayWayName(), + dto.getRemark(),null,null, user); } @Override @@ -425,7 +433,8 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill wxAllBillMapper.updateById(wxBillRent); this.addBillAction(EnumBillAction.RETURN, dto.getBillTypeValue(),dto.getId(), - dto.getAddpay(), dto.getAddpay(),null,wxBillRent.getPayDate(),dto.getPayWayObject(),dto.getRemark(),null,null, user); + dto.getAddpay(), dto.getAddpay(),null,wxBillRent.getPayDate(),dto.getPayWay(),dto.getPayWayName(), + dto.getRemark(),null,null, user); } @Override @@ -441,7 +450,7 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill wxAllBillMapper.updateById(wxBillRent); String badMoney = dbBill.getOwe(); this.addBillAction(EnumBillAction.BAD, dto.getBillTypeValue(),dto.getId(), - badMoney, badMoney,null,null,null,dto.getRemark(),null,null, user); + badMoney, badMoney,null,null,null,null,dto.getRemark(),null,null, user); } @Override @@ -518,7 +527,8 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill wxAllBillMapper.updateById(wxBillRent); EnumBillAction action = EnumBillAction.RETURN; this.addBillAction(action, dto.getBillTypeValue(),dto.getId(), - dto.getAddpay(), dto.getAddpay(),dto.getSetOff(),wxBillRent.getPayDate(),dto.getPayWayObject(),dto.getRemark(),null,null, user); + dto.getAddpay(), dto.getAddpay(),dto.getSetOff(),wxBillRent.getPayDate(),dto.getPayWay(),dto.getPayWayName(), + dto.getRemark(),null,null, user); } @Override @@ -536,7 +546,7 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill wxAllBillMapper.updateById(wxBillRent); EnumBillAction action = EnumBillAction.RETURN; this.addBillAction(action, dto.getBillTypeValue(),dto.getId(), - oldreturnPay.toPlainString(), dto.getPayToMerchant(),null,null,null,dto.getRemark(),null,null, user); + oldreturnPay.toPlainString(), dto.getPayToMerchant(),null,null,null,null,dto.getRemark(),null,null, user); } @Override diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillBaseService.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillBaseService.java index a1f0fcddd..2c2dc7544 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillBaseService.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillBaseService.java @@ -24,35 +24,31 @@ public class WxBillBaseService{ @Autowired private WxBillActionService wxBillActionService; - protected void addBillAction(EnumBillAction billAction, Integer billType,Long billId, String oldMoney, String newMoney,String setoff,Date payDate,WxBillPayWay payWay,String remark, EnumBillStatus oldStatus,EnumBillStatus newStatus,MallUserInfo mallUserInfo) { + protected void addBillAction(EnumBillAction billAction, Integer billType,Long billId, String oldMoney, String newMoney,String setoff,Date payDate,Long payWayId,String payWayName,String remark, EnumBillStatus oldStatus,EnumBillStatus newStatus,MallUserInfo mallUserInfo) { WxBillAction wxBillAction = new WxBillAction(); wxBillAction.setBillId(billId); wxBillAction.setBillType(billType); wxBillAction.setOldMoney(oldMoney); wxBillAction.setNewMoney(newMoney); - wxBillAction.setDetails(billAction.getDescription(oldMoney, newMoney,setoff,payWay,oldStatus,newStatus)); + wxBillAction.setDetails(billAction.getDescription(oldMoney, newMoney,setoff,payWayName,oldStatus,newStatus)); wxBillAction.setAction(billAction.getCode()); wxBillAction.setPayDate(payDate); - if (null != payWay) { - wxBillAction.setPayWay(payWay.getId()); - } + wxBillAction.setPayWay(payWayId); wxBillAction.setRemark(remark); wxBillAction.setUserType(EnumSystemUserType.ADMIN.getCode()); wxBillActionService.modifyBill(wxBillAction, mallUserInfo); } - protected void addBillAction(EnumBillAction billAction, Integer billType,Long billId, String oldMoney, String newMoney,String setoff,Date payDate,WxBillPayWay payWay,String remark,EnumBillStatus oldStatus,EnumBillStatus newStatus, WxMerchantBUser bUser) { + protected void addBillAction(EnumBillAction billAction, Integer billType,Long billId, String oldMoney, String newMoney,String setoff,Date payDate,Long payWayId,String payWayName,String remark,EnumBillStatus oldStatus,EnumBillStatus newStatus, WxMerchantBUser bUser) { WxBillAction wxBillAction = new WxBillAction(); wxBillAction.setBillId(billId); wxBillAction.setBillType(billType); wxBillAction.setOldMoney(oldMoney); wxBillAction.setNewMoney(newMoney); - wxBillAction.setDetails(billAction.getDescription(oldMoney, newMoney,setoff,payWay,oldStatus,newStatus)); + wxBillAction.setDetails(billAction.getDescription(oldMoney, newMoney,setoff,payWayName,oldStatus,newStatus)); wxBillAction.setAction(billAction.getCode()); wxBillAction.setPayDate(payDate); - if (null != payWay) { - wxBillAction.setPayWay(payWay.getId()); - } + wxBillAction.setPayWay(payWayId); wxBillAction.setRemark(remark); wxBillAction.setUserType(EnumSystemUserType.MERCHANT.getCode()); wxBillActionService.modifyBill(wxBillAction, bUser); 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 76ebadfb6..31f9c4655 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java @@ -554,7 +554,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { //单保存冲抵的时候,实收金额为0 BigDecimal receiveTotal = new BigDecimal(0); - WxBillPayWay payWay0 = null; + //WxBillPayWay payWay0 = null; final IdWorker idWorker = IdWorker.get(); Long receiveId = idWorker.nextId(); List receivePayWayList = new ArrayList(); @@ -567,14 +567,12 @@ public class WxFinanceServiceImpl implements WxFinanceService { throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"收款方式不能为空"); } receiveTotal = receiveTotal.add(new BigDecimal(payWay.getMoney())); - if (null == payWay0) { - payWay0 = payWay; - } WxFinanceReceivePayway rpw = new WxFinanceReceivePayway(); rpw.updateTenantInfo(record); rpw.setReceiveId(receiveId); rpw.setReceive(payWay.getMoney()); rpw.setPayWay(payWay.getId()); + rpw.setPayWayName(payWay.getName()); rpw.setCreateTime(new Date()); rpw.setUpdateTime(new Date()); rpw.setIsDel(EnumYesOrNo.NO.getCode()); @@ -605,7 +603,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { for (int i = 0 ; i < record.getBills().size(); i++) { WxAllBill be = record.getBills().get(i); //每个账单要创建一个收款关联单,如果有冲抵,要额外创建 - boolean noNeedCreate = createBillReceive(calcuteDto,user,addreceive,be,merchant,payWay0); + boolean noNeedCreate = createBillReceive(calcuteDto,user,addreceive,be,merchant,receivePayWayList); if (!noNeedCreate) { isAllEmpity = false; } @@ -627,7 +625,36 @@ public class WxFinanceServiceImpl implements WxFinanceService { return retMap; } - public boolean createBillReceive(FinanceReceiveCalcuteDTO calcuteDto,MallUserInfo user,WxFinanceReceive addreceive,WxAllBill be,WxMerchant merchant,WxBillPayWay payWay0) { + private void calcuteReceiveMoney(StringBuffer sb,WxFinanceReceive addreceive,WxAllBill bill,List receivePayWayList,BigDecimal moneyDecimal) { + if (moneyDecimal.compareTo(new BigDecimal(0)) <= 0 ) { + return ; + } + for (int i = 0 ; i < receivePayWayList.size(); i ++) { + WxFinanceReceivePayway payway = receivePayWayList.get(i); + //能够覆盖账单金额 + if (moneyDecimal.compareTo(new BigDecimal(payway.getReceive())) <= 0 ) { + //创建一个实收款单关联 + createFinanceReceiveBill(addreceive,bill,moneyDecimal.toPlainString(),null,payway.getId()); + sb.append(payway.getPayWayName()).append("收款").append(moneyDecimal.toPlainString()).append(","); + BigDecimal remain = new BigDecimal(payway.getReceive()).subtract(moneyDecimal); + if (remain.compareTo(new BigDecimal(0))==0) { + receivePayWayList.remove(i); + }else { + payway.setReceive(remain.toPlainString()); + } + break; + }else { + //创建一个实收款单关联 + createFinanceReceiveBill(addreceive,bill,payway.getReceive(),null,payway.getId()); + sb.append(payway.getPayWayName()).append("收款").append(payway.getReceive()).append(","); + receivePayWayList.remove(i); + BigDecimal needlat = moneyDecimal.subtract(new BigDecimal(payway.getReceive())); + calcuteReceiveMoney(sb,addreceive,bill,receivePayWayList,needlat); + } + } + } + + public boolean createBillReceive(FinanceReceiveCalcuteDTO calcuteDto,MallUserInfo user,WxFinanceReceive addreceive,WxAllBill be,WxMerchant merchant,List receivePayWayList) { //如果既没有收款,也没有冲抵,则不更新 boolean noNeedCreate = true; //计算账单收款费用,更新账单收款 @@ -654,18 +681,23 @@ public class WxFinanceServiceImpl implements WxFinanceService { money = calcuteDto.getTotalRemainReceive().toPlainString(); calcuteDto.setTotalRemainReceive(new BigDecimal(0)); } + + WxFinanceReceivePayway payway0 = receivePayWayList.get(0); + + StringBuffer sb = new StringBuffer(); + BigDecimal moneyDecimal = new BigDecimal(money); + //根据金额循环创建 + calcuteReceiveMoney(sb,addreceive, bill, receivePayWayList, moneyDecimal); + WxBillPayDTO payDto = new WxBillPayDTO(); payDto.updateTenantInfo(addreceive); payDto.setId(be.getId()); payDto.setBillTypeValue(be.getBillType()); payDto.setAddpay(money); - payDto.setPayWay(payWay0.getId()); - payDto.setPayWayObject(payWay0); - payDto.setRemark("收款单收款["+addreceive.getId()+"]"+addreceive.getRemark()); + payDto.setPayWay(payway0.getId()); + payDto.setPayWayName(payway0.getPayWayName()); + payDto.setRemark("收款单收款["+addreceive.getId()+"]"+addreceive.getRemark()+"收款明细:"+sb.toString()); be.setCurrentReceive(money); - - //创建一个实收款单关联 - createFinanceReceiveBill(addreceive,bill,money,null,payWay0.getId()); bill.setCurrentReceive(money); //并且有抵扣 if(StringUtils.isNotBlank(be.getCurrentSetOff())) { @@ -693,11 +725,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { 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.setPayWayName("冲抵"); payDto.setRemark("收款单收款["+addreceive.getId()+"]冲抵"+addreceive.getRemark()); wxBillAllHelper.updatePay(payDto, user); } @@ -825,7 +853,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { for (int i = 0 ; i < record.getBills().size(); i++) { WxAllBill be = record.getBills().get(i); //每个账单要创建一个收款关联单,如果有冲抵,要额外创建 - boolean noNeedCreate = createBillPay(calcuteDto,user,addreceive,be,merchant,payWay0); + boolean noNeedCreate = createBillPay(calcuteDto,user,addreceive,be,merchant,receivePayWayList); if (!noNeedCreate) { isAllEmpity = false; } @@ -843,7 +871,36 @@ public class WxFinanceServiceImpl implements WxFinanceService { return retMap; } - public boolean createBillPay(FinanceReceiveCalcuteDTO calcuteDto,MallUserInfo user,WxFinanceReceive addreceive,WxAllBill be,WxMerchant merchant,WxBillPayWay payWay0) { + private void calcutePayMoney(StringBuffer sb,WxFinanceReceive addreceive,WxAllBill bill,List receivePayWayList,BigDecimal moneyDecimal) { + if (moneyDecimal.compareTo(new BigDecimal(0)) <= 0 ) { + return ; + } + for (int i = 0 ; i < receivePayWayList.size(); i ++) { + WxFinanceReceivePayway payway = receivePayWayList.get(i); + //能够覆盖账单金额 + if (moneyDecimal.compareTo(new BigDecimal(payway.getReceive())) <= 0 ) { + //创建一个实收款单关联 + createFinanceReceiveBill(addreceive,bill,null,moneyDecimal.toPlainString(),payway.getId()); + sb.append(payway.getPayWayName()).append("付款").append(moneyDecimal.toPlainString()).append(","); + BigDecimal remain = new BigDecimal(payway.getReceive()).subtract(moneyDecimal); + if (remain.compareTo(new BigDecimal(0))==0) { + receivePayWayList.remove(i); + }else { + payway.setReceive(remain.toPlainString()); + } + break; + }else { + //创建一个实收款单关联 + createFinanceReceiveBill(addreceive,bill,null,payway.getReceive(),payway.getId()); + sb.append(payway.getPayWayName()).append("付款").append(payway.getReceive()).append(","); + receivePayWayList.remove(i); + BigDecimal needlat = moneyDecimal.subtract(new BigDecimal(payway.getReceive())); + calcutePayMoney(sb,addreceive,bill,receivePayWayList,needlat); + } + } + } + + public boolean createBillPay(FinanceReceiveCalcuteDTO calcuteDto,MallUserInfo user,WxFinanceReceive addreceive,WxAllBill be,WxMerchant merchant,List receivePayWayList) { //如果既没有收款,也没有冲抵,则不更新 boolean noNeedCreate = true; //计算账单收款费用,更新账单收款 @@ -868,18 +925,24 @@ public class WxFinanceServiceImpl implements WxFinanceService { money = calcuteDto.getTotalRemainPay().toPlainString(); calcuteDto.setTotalRemainPay(new BigDecimal(0)); } + + WxFinanceReceivePayway payway0 = receivePayWayList.get(0); + WxBillPayDTO payDto = new WxBillPayDTO(); payDto.updateTenantInfo(addreceive); payDto.setId(be.getId()); payDto.setBillTypeValue(be.getBillType()); payDto.setPayToMerchant(money); - payDto.setPayWay(payWay0.getId()); - payDto.setPayWayObject(payWay0); + payDto.setPayWay(payway0.getId()); + payDto.setPayWayName(payway0.getPayWayName()); payDto.setRemark("付款单付款["+addreceive.getId()+"]"+addreceive.getRemark()); be.setCurrentReceive(money); - //创建一个实收款单关联 - createFinanceReceiveBill(addreceive,bill,null,money,payWay0.getId()); + //根据金额循环创建 + StringBuffer sb = new StringBuffer(); + BigDecimal moneyDecimal = new BigDecimal(money); + calcutePayMoney(sb, addreceive, bill, receivePayWayList, moneyDecimal); + bill.setCurrentReceive(money); wxBillAllHelper.updatePayToMerchant(payDto, user); diff --git a/mallinkService/src/main/java/com/iformall/service/payBill/impl/PayBillBaseService.java b/mallinkService/src/main/java/com/iformall/service/payBill/impl/PayBillBaseService.java index c8a08f0f7..b3d7a635c 100644 --- a/mallinkService/src/main/java/com/iformall/service/payBill/impl/PayBillBaseService.java +++ b/mallinkService/src/main/java/com/iformall/service/payBill/impl/PayBillBaseService.java @@ -24,7 +24,8 @@ public class PayBillBaseService { dto.setId(billId); dto.setBillTypeValue(billType.getCode()); dto.setAddpay(paid); - dto.setPayWayObject(payWay); + dto.setPayWay(payWay.getId()); + dto.setPayWayName(payWay.getName()); dto.setRemark(remark); WxMerchantBUser buser = wxMerchantBUserService.getById(merchantBUserId);