This commit is contained in:
linfso 2024-09-07 23:31:46 +08:00
parent 1b6cf5b65a
commit e2fb5a93dc
3 changed files with 76 additions and 32 deletions

View File

@ -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();
}
}
}

View File

@ -76,4 +76,12 @@ public interface IEmisSettlePayRecordService
* @return 结果
*/
public int deleteEmisSettlePayRecordById(Long id);
/**
* 重新计算收款状态
* @param settleBillNo
* @return
*/
public int reCalcSettleBillPayStatus(String settleBillNo);
}

View File

@ -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<EmisSettleSubBill> 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<Map> 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);
}
}
}