This commit is contained in:
linfso 2025-03-12 14:07:15 +08:00
parent 5b3cd388ea
commit bd54ba7f99
2 changed files with 105 additions and 64 deletions

View File

@ -237,28 +237,12 @@ public class EmisBaseService {
if(!CollectionUtils.isEmpty(listCreditCustomer)){
EmisCreditCustomer item0=listCreditCustomer.get(0);
BigDecimal preBalance=item0.getCreditMoney().subtract(item0.getUseMoney());
if(emisWaybill.getFreight().compareTo(preBalance) == 1 ){
// 提示异常
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
}else{
// 当前余额,变动后余额,变动金额
BigDecimal backBalance=preBalance.subtract(emisWaybill.getFreight());
// 加入额度占用
BigDecimal changeMoney=emisWaybill.getFreight();
// 扣减额度,插入扣额度数据明细
EmisCreditCustomerRecord itemRecord=new EmisCreditCustomerRecord();
itemRecord.setAccCode(item0.getAccCode());
itemRecord.setCustomerCode(item0.getCustomerCode());
itemRecord.setBillCode(emisWaybill.getBillCode());
itemRecord.setPreBalance(preBalance);
itemRecord.setChangeMoney(emisWaybill.getFreight());
itemRecord.setChangeType("2");
itemRecord.setBackBalance(backBalance);
emisCreditCustomerRecordMapper.insertEmisCreditCustomerRecord(itemRecord);
// 更新使用额度
emisCreditCustomerMapper.changeBalance(item0.getAccCode(),changeMoney);
}
}
@ -280,22 +264,8 @@ public class EmisBaseService {
// 提示异常
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
}else{
// 当前余额,变动后余额,变动金额
BigDecimal backBalance=preBalance.subtract(emisWaybill.getFreight());
BigDecimal changeMoney=emisWaybill.getFreight();
// 扣减额度,插入扣额度数据明细
EmisCreditSalesmenRecord itemRecord=new EmisCreditSalesmenRecord();
itemRecord.setAccCode(item0.getAccCode());
itemRecord.setSalesmen(item0.getSalesmen());
itemRecord.setBillCode(emisWaybill.getBillCode());
itemRecord.setPreBalance(preBalance);
itemRecord.setChangeMoney(emisWaybill.getFreight());
itemRecord.setChangeType("2");
itemRecord.setBackBalance(backBalance);
emisCreditSalesmenRecordMapper.insertEmisCreditSalesmenRecord(itemRecord);
// 更新余额
BigDecimal changeMoney=emisWaybill.getFreight();
emisCreditSalesmenMapper.changeBalance(item0.getAccCode(),changeMoney);
}
}
@ -303,36 +273,101 @@ public class EmisBaseService {
}
/**
* 删除运单使用信用额度
* @param emisWaybill
* 重新计算使用信用额度
* @param oldBill
* @param newBill
*/
public void deleteUseQuotaCredit(EmisWaybill emisWaybill) throws EmisBizError {
// 根据运单查询使用记录,删除以前的记录插入新的记录
// 删除月结使用
EmisCreditCustomerRecord queryCreditCustomerRecord=new EmisCreditCustomerRecord();
queryCreditCustomerRecord.setBillCode(emisWaybill.getBillCode());
queryCreditCustomerRecord.setChangeType("2");
List<EmisCreditCustomerRecord> listCreditCustomerRecord=emisCreditCustomerRecordMapper.selectEmisCreditCustomerRecordList(queryCreditCustomerRecord);
if(!CollectionUtils.isEmpty(listCreditCustomerRecord)){
for (EmisCreditCustomerRecord item:listCreditCustomerRecord) {
// 恢复额度
emisCreditCustomerMapper.changeBalance(item.getAccCode(),BigDecimal.ZERO.subtract(item.getChangeMoney()));
// 删除记录
emisCreditCustomerRecordMapper.deleteEmisCreditCustomerRecordById(item.getId());
public void adjustUseQuotaCredit(EmisWaybill oldBill,EmisWaybill newBill) throws EmisBizError {
// 更新旧的统计
if(oldBill!=null) {
String oldPaymentType = oldBill.getPaymentType();
if ("2".equals(oldPaymentType)
|| "4".equals(oldPaymentType)
|| "5".equals(oldPaymentType)
) {
EmisCreditCustomer queryCreditCustomer = new EmisCreditCustomer();
queryCreditCustomer.setMonthlyPayCode(oldBill.getCustNo());
queryCreditCustomer.getParams().put("sendDate", oldBill.getSendDate());
queryCreditCustomer.setTransType(oldBill.getTransType());
List<EmisCreditCustomer> listCreditCustomer = emisCreditCustomerMapper.selectEmisCreditCustomerList(queryCreditCustomer);
if (!CollectionUtils.isEmpty(listCreditCustomer)) {
EmisCreditCustomer item0 = listCreditCustomer.get(0);
// 获取已使用金额
BigDecimal useMoney = emisCreditCustomerMapper.getUseMoney(item0);
EmisCreditCustomer upd = new EmisCreditCustomer();
upd.setId(item0.getId());
upd.setUseMoney(useMoney);
emisCreditCustomerMapper.updateEmisCreditCustomer(upd);
}
} else if ("1".equals(oldPaymentType) || "3".equals(oldPaymentType)) {
// 现金额度占用
EmisCreditSalesmen queryCreditSalesmen = new EmisCreditSalesmen();
queryCreditSalesmen.setSalesmen(oldBill.getSalesmen());
queryCreditSalesmen.getParams().put("sendDate", oldBill.getSendDate());
queryCreditSalesmen.setTransType(oldBill.getTransType());
queryCreditSalesmen.setBlOpen("1");
List<EmisCreditSalesmen> listCreditSalesmen = emisCreditSalesmenMapper.selectEmisCreditSalesmenList(queryCreditSalesmen);
if (!CollectionUtils.isEmpty(listCreditSalesmen)) {
EmisCreditSalesmen item0 = listCreditSalesmen.get(0);
// 获取已使用金额
BigDecimal useMoney = emisCreditSalesmenMapper.getUseMoney(item0);
EmisCreditSalesmen upd = new EmisCreditSalesmen();
upd.setId(item0.getId());
upd.setUseMoney(useMoney);
emisCreditSalesmenMapper.updateEmisCreditSalesmen(upd);
}
}
}
// 删除现金使用
EmisCreditSalesmenRecord queryCreditSalesmenRecord=new EmisCreditSalesmenRecord();
queryCreditSalesmenRecord.setBillCode(emisWaybill.getBillCode());
queryCreditSalesmenRecord.setChangeType("2");
List<EmisCreditSalesmenRecord> listCreditSalesmenRecord=emisCreditSalesmenRecordMapper.selectEmisCreditSalesmenRecordList(queryCreditSalesmenRecord);
if(!CollectionUtils.isEmpty(listCreditSalesmenRecord)){
for (EmisCreditSalesmenRecord item:listCreditSalesmenRecord) {
// 恢复额度
emisCreditSalesmenMapper.changeBalance(item.getAccCode(),BigDecimal.ZERO.subtract(item.getChangeMoney()));
// 删除记录
emisCreditSalesmenRecordMapper.deleteEmisCreditSalesmenRecordById(item.getId());
// 更新新的统计
if(newBill!=null) {
String newPaymentType = newBill.getPaymentType();
if ("2".equals(newPaymentType)
|| "4".equals(newPaymentType)
|| "5".equals(newPaymentType)
) {
EmisCreditCustomer queryCreditCustomer = new EmisCreditCustomer();
queryCreditCustomer.setMonthlyPayCode(newBill.getCustNo());
queryCreditCustomer.getParams().put("sendDate", newBill.getSendDate());
queryCreditCustomer.setTransType(newBill.getTransType());
List<EmisCreditCustomer> listCreditCustomer = emisCreditCustomerMapper.selectEmisCreditCustomerList(queryCreditCustomer);
if (!CollectionUtils.isEmpty(listCreditCustomer)) {
EmisCreditCustomer item0 = listCreditCustomer.get(0);
// 获取已使用金额
BigDecimal useMoney = emisCreditCustomerMapper.getUseMoney(item0);
EmisCreditCustomer upd = new EmisCreditCustomer();
upd.setId(item0.getId());
upd.setUseMoney(useMoney);
emisCreditCustomerMapper.updateEmisCreditCustomer(upd);
}
} else if ("1".equals(newPaymentType) || "3".equals(newPaymentType)) {
// 现金额度占用
EmisCreditSalesmen queryCreditSalesmen = new EmisCreditSalesmen();
queryCreditSalesmen.setSalesmen(newBill.getSalesmen());
queryCreditSalesmen.getParams().put("sendDate", newBill.getSendDate());
queryCreditSalesmen.setTransType(newBill.getTransType());
queryCreditSalesmen.setBlOpen("1");
List<EmisCreditSalesmen> listCreditSalesmen = emisCreditSalesmenMapper.selectEmisCreditSalesmenList(queryCreditSalesmen);
if (!CollectionUtils.isEmpty(listCreditSalesmen)) {
EmisCreditSalesmen item0 = listCreditSalesmen.get(0);
// 获取已使用金额
BigDecimal useMoney = emisCreditSalesmenMapper.getUseMoney(item0);
EmisCreditSalesmen upd = new EmisCreditSalesmen();
upd.setId(item0.getId());
upd.setUseMoney(useMoney);
emisCreditSalesmenMapper.updateEmisCreditSalesmen(upd);
}
}
}
}

View File

@ -1408,11 +1408,9 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
confirmOrder(emisWaybillOld,emisWaybillSave);
}else {
// if(OrderStatus.INIT.statusCode.equals(emisWaybillOld.getOrderStatus())){
// throw new EmisBizError(EmisBizErrorType.BILL_LOCK, "未接单,不允许修改");
// }
// 检查是否已锁单
checkDBBillIsLock(emisWaybillOld);
@ -1424,16 +1422,14 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
// 修改运单
reUpdateWayBill(emisWaybillOld, emisWaybillSave);
// 信用额度计算
adjustUseQuotaCredit(emisWaybillOld,emisWaybillSave);
}
}
return 1;
}
/**
* 下单接口Oms
* @param emisWaybillSave
@ -3150,6 +3146,16 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
e.printStackTrace();
}
// 运单立即重新出账
try {
// 出账
redoGenerateBill(emisWaybillSave.getBillCode());
// 重新计算提成
emisCommissionProfitService.reCalcProfitByBillCode(emisWaybillSave.getBillCode());
}catch (Exception ex){
ex.printStackTrace();
}
}