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