diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonController.java index e85bc437c..8e62b124a 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonController.java @@ -83,6 +83,11 @@ public class EmisCommonController extends EmisBaseController @Autowired private IEmisSettleInvoiceRecordService emisSettleInvoiceRecordService; + @Autowired + private IEmisSettlePayRecordService emisSettlePayRecordService; + + + @Autowired RedissonService redissonService; @@ -696,5 +701,20 @@ public class EmisCommonController extends EmisBaseController } } + /** + * 重新计算账单开票状态 + * @param settleBillNo + */ + @Log(title = "重新计算收款状态", businessType = BusinessType.UPDATE) + @RequestMapping("/reCalcSettleBillPayStatus") + public void reCalcSettleBillPayStatus(String settleBillNo) { + try{ + emisSettlePayRecordService.reCalcSettleBillPayStatus(settleBillNo); + } + catch (Exception ex){ + ex.printStackTrace(); + } + } + } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettlePayRecordService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettlePayRecordService.java index e7f88df5a..75924ec31 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettlePayRecordService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettlePayRecordService.java @@ -76,4 +76,12 @@ public interface IEmisSettlePayRecordService * @return 结果 */ public int deleteEmisSettlePayRecordById(Long id); + + + /** + * 重新计算收款状态 + * @param settleBillNo + * @return + */ + public int reCalcSettleBillPayStatus(String settleBillNo); } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettlePayRecordServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettlePayRecordServiceImpl.java index 782403dc3..48f97d5a7 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettlePayRecordServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettlePayRecordServiceImpl.java @@ -12,6 +12,7 @@ package com.xdadan.erp.emis.service.impl; import java.math.BigDecimal; import java.util.List; +import java.util.Map; import com.xdadan.erp.emis.domain.*; import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType; @@ -23,6 +24,7 @@ import com.xdadan.erp.emis.service.EmisBaseService; import com.xdadan.erp.emis.utils.WaybillHelper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -143,7 +145,7 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I emisSettlePayRecordMapper.insertEmisSettlePayRecord(emisSettlePayRecord); // 重新计算账单收款信息 - reCalcSettleBillPayrecordInfo(emisSettlePayRecord.getSettleBillNo()); + reCalcSettleBillPayStatus(emisSettlePayRecord.getSettleBillNo()); return 1; } @@ -153,7 +155,8 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I * @param settleBillNo * @return */ - private int reCalcSettleBillPayrecordInfo(String settleBillNo){ + @Override + public int reCalcSettleBillPayStatus(String settleBillNo){ EmisSettleBill oldBill =getSettleBillBySettleBillNo(settleBillNo); // 获取收款记录 @@ -162,12 +165,9 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I // 全部收款金额 BigDecimal totalAllPayMoney = BigDecimal.ZERO; - // 计算已收款金额 BigDecimal totalPayMoney = BigDecimal.ZERO; - BigDecimal totalRefundMoney = BigDecimal.ZERO; - // 抵扣金额 BigDecimal satisfyMoney = BigDecimal.ZERO; /* allowance_money */ @@ -180,7 +180,7 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I // refund_money BigDecimal refundMoney = BigDecimal.ZERO; - log.debug("收款状态更新===>应收:{}",oldBill.getRecMoney()); + log.debug("reCalcSettleBillPayStatus===>应收:{}",oldBill.getRecMoney()); for(EmisSettlePayRecord item:payRecordList){ @@ -197,7 +197,7 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I } // 总应收金额 - log.debug("收款状态更新===>totalPayMoney:{},satisfyMoney:{},allowanceMoney:{},deductionMoney:{},otherMoney:{}" + log.debug("reCalcSettleBillPayStatus===>totalPayMoney:{},satisfyMoney:{},allowanceMoney:{},deductionMoney:{},otherMoney:{}" ,totalPayMoney,satisfyMoney,allowanceMoney,allowanceMoney,deductionMoney,otherMoney); // 收款金额-退款金额 @@ -207,10 +207,7 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I .add(allowanceMoney) .add(deductionMoney) .add(otherMoney) - .subtract(refundMoney) - ; - - totalRefundMoney=totalRefundMoney.add(refundMoney); + .subtract(refundMoney); EmisSettleBill newBill = new EmisSettleBill(); newBill.setId(oldBill.getId()); @@ -218,34 +215,53 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I newBill.setSatisfyMoney(satisfyMoney); newBill.setAllowanceMoney(allowanceMoney); newBill.setOtherMoney(otherMoney); - // 退款金额 newBill.setRefundMoney(refundMoney); - // 判断收款状态 收款金额 + // 更新账单收款状态 收款金额 int rstDif=totalAllPayMoney.compareTo(oldBill.getRecMoney()); - log.debug("收款状态更新===>收款总金额:{},应收:{},rsDif:{}",totalAllPayMoney,oldBill.getRecMoney(),rstDif); - if( rstDif >= 0 ){ - // 已收款 - newBill.setPaymentStatus("1"); + log.debug("reCalcSettleBillPayStatus===>收款金额:{},应收:{}",totalAllPayMoney,oldBill.getRecMoney()); + if( totalAllPayMoney.compareTo(BigDecimal.ZERO) == 0 ){ + newBill.setPaymentStatus("0"); + }else{ + if( rstDif >= 0 ){ + // 已收款 + newBill.setPaymentStatus("1"); + emisSettleBillMapper.updateEmisSettleBill(newBill); + } + else{ + // 部分收款 + newBill.setPaymentStatus("2"); + emisSettleBillMapper.updateEmisSettleBill(newBill); + } } - else{ - // 部分收款 - newBill.setPaymentStatus("2"); - } - - // 更新账单收款状态 emisSettleBillMapper.updateEmisSettleBill(newBill); - // 更新子账单的收款状态 - // 如果全部付款则更新运单的付款状态 - if(rstDif>=0){ - List listSubBill=emisSettleSubBillMapper.selectSubBillListBySettleBillNo(settleBillNo); - for (EmisSettleSubBill subBill:listSubBill) { - EmisWaybill emisWaybill = new EmisWaybill(); - emisWaybill.setBillCode(subBill.getBillCode()); - emisWaybill.setPaymentStatus(newBill.getPaymentStatus()); - emisWaybillMapper.updatePayedStatus(emisWaybill); + // 更新运单的收款状态 + if(totalAllPayMoney.compareTo(BigDecimal.ZERO) > 0){ + BigDecimal totalMoney = BigDecimal.ZERO; + // 更新运单收款记录 + List listRel=emisSettlePayRelMapper.selectHasPayMapList(settleBillNo); + if(!CollectionUtils.isEmpty(listRel)) { + for(Map item:listRel){ + + String billNo= MapUtils.getString(item,"billNo",null); + if(StringUtils.isEmpty(billNo)){ + continue; + } + EmisSettleSubBill subBill = emisSettleSubBillMapper.selectSettleSubBillBySubBillNo(billNo); + BigDecimal sumMoney = BigDecimal.valueOf(Double.valueOf(item.get("sumMoney").toString())); + totalMoney = totalMoney.add(sumMoney); + + EmisWaybill emisWaybill = new EmisWaybill(); + emisWaybill.setBillCode(subBill.getBillCode()); + if(totalMoney.compareTo(subBill.getBillFee())>=0) { + emisWaybill.setPaymentStatus("1"); + }else{ + emisWaybill.setPaymentStatus("2"); + } + emisWaybillMapper.updatePayedStatus(emisWaybill); + } } }