md
This commit is contained in:
parent
ff8f78ebcd
commit
05f4014b9a
@ -151,11 +151,8 @@ public class EmisBaseService {
|
||||
@Autowired
|
||||
private EmisTmsCostFeeMapper emisTmsCostFeeMapper;
|
||||
|
||||
|
||||
|
||||
private static SysUser emptySysUser = new SysUser();
|
||||
|
||||
|
||||
static {
|
||||
emptySysUser.setUserId(0L);
|
||||
emptySysUser.setEmpCode("0");
|
||||
@ -191,7 +188,6 @@ public class EmisBaseService {
|
||||
@Autowired
|
||||
private EmisSettleBillMapper emisSettleBillMapper;
|
||||
|
||||
|
||||
@Autowired
|
||||
private EmisSettleSubBillFeeitemMapper emisSettleSubBillFeeitemMapper;
|
||||
|
||||
@ -215,110 +211,119 @@ public class EmisBaseService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 新下单使用信用额度
|
||||
* @param emisWaybill
|
||||
* 获取运单结算方式 1-现金 2-月结 3-其它(免单)
|
||||
* @param waybill
|
||||
* @return
|
||||
*/
|
||||
public void newUseQuotaCredit(EmisWaybill emisWaybill) throws EmisBizError {
|
||||
String paymentType=emisWaybill.getPaymentType();
|
||||
|
||||
// 月结客户
|
||||
if("2".equals(paymentType)
|
||||
|| "4".equals(paymentType)
|
||||
|| "5".equals(paymentType)
|
||||
){
|
||||
|
||||
// 月结额度占用
|
||||
EmisCreditCustomer queryCreditCustomer = new EmisCreditCustomer();
|
||||
queryCreditCustomer.setMonthlyPayCode(emisWaybill.getCustNo());
|
||||
queryCreditCustomer.getParams().put("sendDate",emisWaybill.getSendDate());
|
||||
queryCreditCustomer.setTransType(emisWaybill.getTransType());
|
||||
List<EmisCreditCustomer> listCreditCustomer=emisCreditCustomerMapper.selectEmisCreditCustomerList(queryCreditCustomer);
|
||||
|
||||
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 changeMoney=emisWaybill.getFreight();
|
||||
emisCreditCustomerMapper.changeBalance(item0.getAccCode(),changeMoney);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( "1".equals(paymentType) || "3".equals(paymentType) ){
|
||||
// 现金额度占用
|
||||
EmisCreditSalesmen queryCreditSalesmen= new EmisCreditSalesmen();
|
||||
queryCreditSalesmen.setSalesmen(emisWaybill.getSalesmen());
|
||||
queryCreditSalesmen.getParams().put("sendDate",emisWaybill.getSendDate());
|
||||
queryCreditSalesmen.setTransType(emisWaybill.getTransType());
|
||||
queryCreditSalesmen.setBlOpen("1");
|
||||
List<EmisCreditSalesmen> listCreditSalesmen=emisCreditSalesmenMapper.selectEmisCreditSalesmenList(queryCreditSalesmen);
|
||||
|
||||
if(!CollectionUtils.isEmpty(listCreditSalesmen)){
|
||||
EmisCreditSalesmen item0=listCreditSalesmen.get(0);
|
||||
|
||||
BigDecimal preBalance=item0.getCreditMoney().subtract(item0.getUseMoney());
|
||||
if(emisWaybill.getFreight().compareTo(preBalance) == 1 ){
|
||||
// 提示异常
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
||||
}else{
|
||||
// 更新余额
|
||||
BigDecimal changeMoney=emisWaybill.getFreight();
|
||||
emisCreditSalesmenMapper.changeBalance(item0.getAccCode(),changeMoney);
|
||||
}
|
||||
}
|
||||
}
|
||||
private String getWaybillSettleType(EmisWaybill waybill){
|
||||
String settleType="";
|
||||
String paymentType = waybill.getPaymentType();
|
||||
if ("2".equals(paymentType)
|
||||
|| "4".equals(paymentType)
|
||||
|| "5".equals(paymentType)
|
||||
) {
|
||||
settleType="2";
|
||||
}else if ("1".equals(paymentType) || "3".equals(paymentType)){
|
||||
settleType="1";
|
||||
}
|
||||
else if ("1".equals(paymentType) || "3".equals(paymentType)){
|
||||
settleType="3";
|
||||
}
|
||||
return settleType;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 检查是否可调整额度
|
||||
* @param oldBill
|
||||
* @param newBill
|
||||
* @throws EmisBizError
|
||||
*/
|
||||
public void checkCanUseQuotaCredit(EmisWaybill oldBill,EmisWaybill newBill) throws EmisBizError {
|
||||
// 判断调整是否超额
|
||||
public void checkUseQuotaCredit(EmisWaybill oldBill,EmisWaybill newBill) throws EmisBizError {
|
||||
// 修改情况
|
||||
if(oldBill!=null&&newBill!=null){
|
||||
|
||||
//
|
||||
// if(oldBill.getPaymentType().equals(newBill.getPaymentType())){
|
||||
//
|
||||
// }
|
||||
String oldSettleType=getWaybillSettleType(oldBill);
|
||||
String newSettleType=getWaybillSettleType(newBill);
|
||||
|
||||
//1.改变支付方式 现金改月结或月结改现金
|
||||
// String oldSettleType="";
|
||||
// String oldPaymentType = oldBill.getPaymentType();
|
||||
// if ("2".equals(oldPaymentType)
|
||||
// || "4".equals(oldPaymentType)
|
||||
// || "5".equals(oldPaymentType)
|
||||
// ) {
|
||||
// oldSettleType="2";
|
||||
// }else if ("1".equals(oldPaymentType) || "3".equals(oldPaymentType)){
|
||||
// oldSettleType="1";
|
||||
// }
|
||||
//
|
||||
// String newSettleType="";
|
||||
// if ("2".equals(oldPaymentType)
|
||||
// || "4".equals(oldPaymentType)
|
||||
// || "5".equals(oldPaymentType)
|
||||
// ) {
|
||||
// oldSettleType="2";
|
||||
// }
|
||||
// 结算方式相同,判断增加的额度是否在范围内
|
||||
if(oldSettleType.equals(newSettleType)){
|
||||
BigDecimal changeMoney=newBill.getFreight().subtract(oldBill.getFreight());
|
||||
if(changeMoney.compareTo(BigDecimal.ZERO)>0){
|
||||
if("2".equals(newSettleType)){
|
||||
EmisCreditCustomer creditCustomer = getEmisCreditCustomerByCond(newBill.getCustNo(),newBill.getSendDate(),newBill.getCarryType());
|
||||
BigDecimal preBalance=creditCustomer.getCreditMoney().subtract(creditCustomer.getUseMoney());
|
||||
if(changeMoney.compareTo(preBalance) > 0 ){
|
||||
// 提示异常
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
||||
}
|
||||
}
|
||||
else if("1".equals(newSettleType)){
|
||||
EmisCreditSalesmen creditSalesmen = getEmisCreditSalesmenByCond(newBill.getSalesmen(),newBill.getSendDate(),newBill.getCarryType());
|
||||
BigDecimal preBalance=creditSalesmen.getCreditMoney().subtract(creditSalesmen.getUseMoney());
|
||||
if(changeMoney.compareTo(preBalance) > 0 ){
|
||||
// 提示异常
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 如果结算方式不同,需要判断新的
|
||||
else{
|
||||
BigDecimal changeMoney=newBill.getFreight();
|
||||
if("2".equals(newSettleType)){
|
||||
EmisCreditCustomer creditCustomer = getEmisCreditCustomerByCond(newBill.getCustNo(),newBill.getSendDate(),newBill.getCarryType());
|
||||
BigDecimal preBalance=creditCustomer.getCreditMoney().subtract(creditCustomer.getUseMoney());
|
||||
if(changeMoney.compareTo(preBalance) > 0 ){
|
||||
// 提示异常
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
||||
}
|
||||
}
|
||||
else if("1".equals(newSettleType)){
|
||||
EmisCreditSalesmen creditSalesmen = getEmisCreditSalesmenByCond(newBill.getSalesmen(),newBill.getSendDate(),newBill.getCarryType());
|
||||
BigDecimal preBalance=creditSalesmen.getCreditMoney().subtract(creditSalesmen.getUseMoney());
|
||||
if(changeMoney.compareTo(preBalance) > 0 ){
|
||||
// 提示异常
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// 新增情况
|
||||
else{
|
||||
// 新单
|
||||
if(newBill!=null){
|
||||
String newSettleType=getWaybillSettleType(newBill);
|
||||
BigDecimal changeMoney=newBill.getFreight();
|
||||
if(changeMoney.compareTo(BigDecimal.ZERO)>0){
|
||||
if("2".equals(newSettleType)){
|
||||
EmisCreditCustomer creditCustomer = getEmisCreditCustomerByCond(newBill.getCustNo(),newBill.getSendDate(),newBill.getCarryType());
|
||||
BigDecimal preBalance=creditCustomer.getCreditMoney().subtract(creditCustomer.getUseMoney());
|
||||
if(changeMoney.compareTo(preBalance) > 0 ){
|
||||
// 提示异常
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
||||
}
|
||||
}
|
||||
else if("1".equals(newSettleType)){
|
||||
EmisCreditSalesmen creditSalesmen = getEmisCreditSalesmenByCond(newBill.getSalesmen(),newBill.getSendDate(),newBill.getCarryType());
|
||||
BigDecimal preBalance=creditSalesmen.getCreditMoney().subtract(creditSalesmen.getUseMoney());
|
||||
if(changeMoney.compareTo(preBalance) > 0 ){
|
||||
// 提示异常
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 重新计算使用信用额度
|
||||
* @param oldBill
|
||||
* @param newBill
|
||||
*/
|
||||
public void adjustUseQuotaCredit(EmisWaybill oldBill,EmisWaybill newBill) throws EmisBizError {
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 重新计算使用信用额度
|
||||
* @param oldBill
|
||||
* @param newBill
|
||||
*/
|
||||
public void reCalcUseQuotaCredit(EmisWaybill oldBill,EmisWaybill newBill) throws EmisBizError {
|
||||
|
||||
// 更新旧的统计
|
||||
if(oldBill!=null) {
|
||||
@ -418,6 +423,49 @@ public class EmisBaseService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取月结额度
|
||||
* @param custNo
|
||||
* @param sendDate
|
||||
* @param transType
|
||||
* @return
|
||||
*/
|
||||
public EmisCreditCustomer getEmisCreditCustomerByCond(String custNo,Date sendDate,String transType){
|
||||
EmisCreditCustomer queryCreditCustomer = new EmisCreditCustomer();
|
||||
queryCreditCustomer.setMonthlyPayCode(custNo);
|
||||
queryCreditCustomer.getParams().put("sendDate", sendDate);
|
||||
queryCreditCustomer.setTransType(transType);
|
||||
List<EmisCreditCustomer> listCreditCustomer = emisCreditCustomerMapper.selectEmisCreditCustomerList(queryCreditCustomer);
|
||||
if (!CollectionUtils.isEmpty(listCreditCustomer)) {
|
||||
return listCreditCustomer.get(0);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 现金额度占用
|
||||
* @param salesmen
|
||||
* @param sendDate
|
||||
* @param transType
|
||||
* @return
|
||||
*/
|
||||
public EmisCreditSalesmen getEmisCreditSalesmenByCond(String salesmen,Date sendDate,String transType){
|
||||
EmisCreditSalesmen queryCreditSalesmen = new EmisCreditSalesmen();
|
||||
queryCreditSalesmen.setSalesmen(salesmen);
|
||||
queryCreditSalesmen.getParams().put("sendDate", sendDate);
|
||||
queryCreditSalesmen.setTransType(transType);
|
||||
queryCreditSalesmen.setBlOpen("1");
|
||||
List<EmisCreditSalesmen> listCreditSalesmen = emisCreditSalesmenMapper.selectEmisCreditSalesmenList(queryCreditSalesmen);
|
||||
|
||||
if (!CollectionUtils.isEmpty(listCreditSalesmen)) {
|
||||
return listCreditSalesmen.get(0);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 录入运单操作日志
|
||||
* @param billCode
|
||||
@ -2064,7 +2112,7 @@ public class EmisBaseService {
|
||||
Integer typeId = emisProblemType.getId();
|
||||
if(typeId == 173 || typeId == 170 || typeId == 151) {
|
||||
try {
|
||||
adjustUseQuotaCredit(oldEmisWaybill, null);
|
||||
reCalcUseQuotaCredit(oldEmisWaybill, null);
|
||||
} catch (EmisBizError emisBizError) {
|
||||
log.error("问题件信用额度计算失败");
|
||||
emisBizError.printStackTrace();
|
||||
|
||||
@ -1421,11 +1421,14 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
|
||||
// 把历史发货日期带过来用于重新计算预估到到时间
|
||||
emisWaybillSave.setSendDate(emisWaybillOld.getSendDate());
|
||||
|
||||
// 检查信用额度
|
||||
checkUseQuotaCredit(null,emisWaybillSave);
|
||||
|
||||
// 修改运单
|
||||
reUpdateWayBill(emisWaybillOld, emisWaybillSave);
|
||||
|
||||
// 信用额度计算
|
||||
adjustUseQuotaCredit(emisWaybillOld,emisWaybillSave);
|
||||
reCalcUseQuotaCredit(emisWaybillOld,emisWaybillSave);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1627,8 +1630,7 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
|
||||
emisWaybillSave.setGoodsPics("1");
|
||||
}
|
||||
|
||||
// 新占用信用额度
|
||||
newUseQuotaCredit(emisWaybillSave);
|
||||
|
||||
|
||||
// 基础信息更新
|
||||
emisWaybillMapper.updateEmisWaybill(emisWaybillSave);
|
||||
@ -1714,6 +1716,9 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
|
||||
dispatchOrSendManCode=emisWaybillSave.getTakePieceEmployeeCode();
|
||||
}
|
||||
|
||||
// 检查信用额度
|
||||
checkUseQuotaCredit(null,emisWaybillSave);
|
||||
|
||||
// 做订单接单确认
|
||||
emisWaybillMapper.confirmOrder(emisWaybillSave);
|
||||
|
||||
@ -1738,10 +1743,14 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
|
||||
// 运单修改需要重新出账
|
||||
try {
|
||||
redoGenerateBill(emisWaybillSave.getBillCode());
|
||||
// 新占用信用额度
|
||||
reCalcUseQuotaCredit(emisWaybillSave,null);
|
||||
}catch (Exception ex){
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 生成寄件底单联
|
||||
try {
|
||||
this.genWaybillOrigAttach(emisWaybillSave.getBillCode());
|
||||
@ -3019,8 +3028,9 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
|
||||
emisWaybillSave.setGoodsPics("1");
|
||||
}
|
||||
|
||||
// 新占用信用额度
|
||||
newUseQuotaCredit(emisWaybillSave);
|
||||
|
||||
// 检查信用额度
|
||||
checkUseQuotaCredit(null,emisWaybillSave);
|
||||
|
||||
//插入新单
|
||||
emisWaybillMapper.insertEmisWaybill(emisWaybillSave);
|
||||
@ -3155,6 +3165,10 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
|
||||
try {
|
||||
// 出账
|
||||
redoGenerateBill(emisWaybillSave.getBillCode());
|
||||
|
||||
// 更新信用额度
|
||||
reCalcUseQuotaCredit(null, emisWaybillSave);
|
||||
|
||||
// 重新计算提成
|
||||
emisCommissionProfitService.reCalcProfitByBillCode(emisWaybillSave.getBillCode());
|
||||
|
||||
@ -3385,13 +3399,9 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
|
||||
// 公共计算部分
|
||||
calcWayBillCommonInfoByApi(emisWaybillSave,true);
|
||||
|
||||
// 新占用信用额度
|
||||
newUseQuotaCredit(emisWaybillSave);
|
||||
|
||||
// 插入运单数据
|
||||
emisWaybillMapper.insertEmisWaybill(emisWaybillSave);
|
||||
|
||||
|
||||
// 绑定专属业务员
|
||||
String bindEmpCode=emisWaybillSave.getTakePieceEmployeeCode();
|
||||
if(StringUtils.isEmpty(bindEmpCode)){
|
||||
@ -3403,7 +3413,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
|
||||
bindSalesmen(bindEmpCode,customerCode);
|
||||
}
|
||||
|
||||
|
||||
// 扣减子单
|
||||
emisElectronicSitePagService.realMatchSubBill(emisWaybillSave.getSendSiteCode(),"T7080",emisWaybillSave.getParcelQty());
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user