This commit is contained in:
linfso 2025-06-18 15:04:33 +08:00
parent 58e904c23a
commit 3b35c592bf

View File

@ -209,6 +209,8 @@ public class EmisWaybillAjustApplyServiceImpl extends EmisBaseService implements
throw new EmisBizError(EmisBizErrorType.FAIL,"已审核!");
}
emisWaybillAjustApply.setBlDestConfirmed("1");
emisWaybillAjustApply.setDestConfirmManCode(getCurrentUser().getEmpCode());
@ -242,6 +244,8 @@ public class EmisWaybillAjustApplyServiceImpl extends EmisBaseService implements
@Override
public int auditCenterPass(EmisWaybillAjustApply emisWaybillAjustApply) throws EmisBizError {
boolean isDZZS=false;
// 重新从数据库取信息
emisWaybillAjustApply = emisWaybillAjustApplyMapper.selectEmisWaybillAjustApplyById(emisWaybillAjustApply.getId());
@ -252,56 +256,72 @@ public class EmisWaybillAjustApplyServiceImpl extends EmisBaseService implements
emisWaybillAjustApply.setBlCenterConfirmed("1");
emisWaybillAjustApply.setCenterConfirmManCode(getCurrentUser().getEmpCode());
// 获取账单状态,若账单处于非未确认状态,不允许审核
List<EmisSettleSubBill> emisSettleSubBillList=getSettleSubBillListByBillCode(emisWaybillAjustApply.getBillCode());
if(!CollectionUtils.isEmpty(emisSettleSubBillList)){
if(emisSettleSubBillList.size()>1){
throw new EmisBizError(EmisBizErrorType.FAIL,"已拆子账单,不允许修改!");
// 判断申请人是否是[单证专属]岗位
SysUser opUser = getEmisStaffByCode(emisWaybillAjustApply.getApplyManCode());
if (opUser != null) {
// 判断申请人是否是单证专属
List<Long> postIds = postMapper.selectPostListByUserId(opUser.getUserId());
if (!CollectionUtils.isEmpty(postIds)) {
for (Long poId : postIds) {
if (poId == 18) {
isDZZS = true;
break;
}
}
}
}
for (EmisSettleSubBill emisSettleSubBill:emisSettleSubBillList) {
if("1".equals(emisSettleSubBill.getBlConfirmCenter())){
throw new EmisBizError(EmisBizErrorType.FAIL,"财务已确认账单,不允许审核,请先取消财务确认!");
// 非单证专属则判断
if(!isDZZS) {
// 获取账单状态,若账单处于非未确认状态,不允许审核
List<EmisSettleSubBill> emisSettleSubBillList = getSettleSubBillListByBillCode(emisWaybillAjustApply.getBillCode());
if (!CollectionUtils.isEmpty(emisSettleSubBillList)) {
if (emisSettleSubBillList.size() > 1) {
throw new EmisBizError(EmisBizErrorType.FAIL, "已拆子账单,不允许修改!");
}
// 如果已定制账单,并且新的销售联系人、回款联系人不一致,必须从定制账单中移除
if("1".equals(emisSettleSubBill.getBlMerge())){
// 判断是否调整销售联系人或回款联系人,如调整,需要先从账单里移除
String newDataStr=emisWaybillAjustApply.getJsonData();
JSONObject jObj = JSONObject.parseObject(newDataStr);
JSONObject jobjOldValue=jObj.getJSONObject("oldValue");
JSONObject jobjNewValue=jObj.getJSONObject("newValue");
String oldPaymentType = jobjOldValue.getString("paymentType");
String oldCustNo = jobjOldValue.getString("custNo");
String oldPayee=emisSettleSubBill.getPayee();
String oldSalesmen=emisSettleSubBill.getSalesmen();
String newPaymentType = jobjNewValue.getString("paymentType");
String newCustNo = jobjNewValue.getString("custNo");
String newPayee=jobjNewValue.getString("payee");
String newSalesmen=jobjNewValue.getString("salesmen");
if( !oldPayee.equals(newPayee) || !oldSalesmen.equals(newSalesmen) ){
throw new EmisBizError(EmisBizErrorType.FAIL,"已定制账单,销售联系/回款联系人发生改变,请从原账单移除,单号:"+emisSettleSubBill.getBillNo());
for (EmisSettleSubBill emisSettleSubBill : emisSettleSubBillList) {
if ("1".equals(emisSettleSubBill.getBlConfirmCenter())) {
throw new EmisBizError(EmisBizErrorType.FAIL, "财务已确认账单,不允许审核,请先取消财务确认!");
}
// bug: 1412 支付方式发生改变,需要从账单中移除
if( !oldPaymentType.equals(newPaymentType)){
throw new EmisBizError(EmisBizErrorType.FAIL,"已定制账单,支付方式发生改变,请从原账单移除,单号:"+emisSettleSubBill.getBillNo());
}
// 如果已定制账单,并且新的销售联系人、回款联系人不一致,必须从定制账单中移除
if ("1".equals(emisSettleSubBill.getBlMerge())) {
// 判断是否调整销售联系人或回款联系人,如调整,需要先从账单里移除
// bug: 1412 月结客户发生改变,都需要从账单中移除
if(!StringUtils.isEmpty(newCustNo)){
if( !newCustNo.equals(oldCustNo)){
throw new EmisBizError(EmisBizErrorType.FAIL,"已定制账单,月结客户发生改变,请从原账单移除,单号:"+emisSettleSubBill.getBillNo());
String newDataStr = emisWaybillAjustApply.getJsonData();
JSONObject jObj = JSONObject.parseObject(newDataStr);
JSONObject jobjOldValue = jObj.getJSONObject("oldValue");
JSONObject jobjNewValue = jObj.getJSONObject("newValue");
String oldPaymentType = jobjOldValue.getString("paymentType");
String oldCustNo = jobjOldValue.getString("custNo");
String oldPayee = emisSettleSubBill.getPayee();
String oldSalesmen = emisSettleSubBill.getSalesmen();
String newPaymentType = jobjNewValue.getString("paymentType");
String newCustNo = jobjNewValue.getString("custNo");
String newPayee = jobjNewValue.getString("payee");
String newSalesmen = jobjNewValue.getString("salesmen");
if (!oldPayee.equals(newPayee) || !oldSalesmen.equals(newSalesmen)) {
throw new EmisBizError(EmisBizErrorType.FAIL, "已定制账单,销售联系/回款联系人发生改变,请从原账单移除,单号:" + emisSettleSubBill.getBillNo());
}
}
// bug: 1412 支付方式发生改变,需要从账单中移除
if (!oldPaymentType.equals(newPaymentType)) {
throw new EmisBizError(EmisBizErrorType.FAIL, "已定制账单,支付方式发生改变,请从原账单移除,单号:" + emisSettleSubBill.getBillNo());
}
// bug: 1412 月结客户发生改变,都需要从账单中移除
if (!StringUtils.isEmpty(newCustNo)) {
if (!newCustNo.equals(oldCustNo)) {
throw new EmisBizError(EmisBizErrorType.FAIL, "已定制账单,月结客户发生改变,请从原账单移除,单号:" + emisSettleSubBill.getBillNo());
}
}
}
}
}
}
@ -342,77 +362,59 @@ public class EmisWaybillAjustApplyServiceImpl extends EmisBaseService implements
// 审核通过
emisWaybillAjustApplyMapper.auditCenterPass(emisWaybillAjustApply);
// 财务中心费用审核:数据部人员通过岗位登记的费用申请:修改项目“运费调整”,财务审批通过后数据直接修改不用再进行层层审核;
//bug:1610 财务中心费用审核:数据部人员通过岗位登记的费用申请:修改项目“运费调整”,财务审批通过后数据直接修改不用再进行层层审核;
// 运费调整类型
if("9".equals(emisWaybillAjustApply.getApplyType())){
// 若是单证专属则自动确认账单
if(isDZZS) {
// 自动确认账单
EmisSettleSubBill oldSubBill = emisBaseService.getSettleSubBillBySubBillNo(emisWaybillAjustApply.getBillCode());
if (oldSubBill != null) {
// 触发业务自动确认
EmisSettleSubBill updSubBillBySite = new EmisSettleSubBill();
updSubBillBySite.setId(oldSubBill.getId());
updSubBillBySite.setConfirmSiteManCode(emisWaybillAjustApply.getApplyManCode());
updSubBillBySite.setConfirmSiteCode(emisWaybillAjustApply.getApplySiteCode());
updSubBillBySite.setConfirmSiteNote("[单证专属]申请调整费用-自动确认");
emisBaseService.confirmBillBySite(updSubBillBySite);
SysUser opUser=getEmisStaffByCode(emisWaybillAjustApply.getApplyManCode());
if(opUser!=null){
// 判断申请人是否是单证专属
boolean isDZZS=false;
List<Long> postIds=postMapper.selectPostListByUserId(opUser.getUserId());
if(!CollectionUtils.isEmpty(postIds)){
for(Long poId:postIds){
if(poId==18){
isDZZS=true;
break;
}
}
}
// 触发财务自动确认
EmisSettleSubBill updSubBillByCenter = new EmisSettleSubBill();
updSubBillByCenter.setConfirmCenterManCode(getCurrentUser().getEmpCode());
updSubBillByCenter.setConfirmCenterCode(getCurrentUser().getOwnerSiteCode());
updSubBillByCenter.setConfirmCenterNote("[单证专属]申请调整费用-自动确认");
updSubBillByCenter.setId(oldSubBill.getId());
// 若是单证专属则自动确认账单
if(isDZZS) {
// 自动确认账单
EmisSettleSubBill oldSubBill = emisBaseService.getSettleSubBillBySubBillNo(emisWaybillAjustApply.getBillCode());
if (oldSubBill != null) {
// 触发业务自动确认
EmisSettleSubBill updSubBillBySite = new EmisSettleSubBill();
updSubBillBySite.setId(oldSubBill.getId());
updSubBillBySite.setConfirmSiteManCode(emisWaybillAjustApply.getApplyManCode());
updSubBillBySite.setConfirmSiteCode(emisWaybillAjustApply.getApplySiteCode());
updSubBillBySite.setConfirmSiteNote("[单证专属]申请调整费用-自动确认");
emisBaseService.confirmBillBySite(updSubBillBySite);
emisBaseService.confirmBillByCenter(updSubBillByCenter);
// 触发财务自动确认
EmisSettleSubBill updSubBillByCenter = new EmisSettleSubBill();
updSubBillByCenter.setConfirmCenterManCode(getCurrentUser().getEmpCode());
updSubBillByCenter.setConfirmCenterCode(getCurrentUser().getOwnerSiteCode());
updSubBillByCenter.setConfirmCenterNote("[单证专属]申请调整费用-自动确认");
updSubBillByCenter.setId(oldSubBill.getId());
// 判断账单是否已经被合并,若被合并则需要重新计算费用
// 重新计算总账单费用
// 获取账单是否已经被合并,若合并则更新账单费用
if (!StringUtils.isEmpty(oldSubBill.getSettleBillNo())) {
EmisSettleBill oldSettleBill = emisSettleBillService.selectEmisSettleBillBySettleBillNo(oldSubBill.getSettleBillNo());
if (oldSettleBill != null) {
// 触发业务账单自动确认
EmisSettleBill emisSettleBill = new EmisSettleBill();
emisSettleBill.setConfirmSiteManCode(emisWaybillAjustApply.getApplyManCode());
emisSettleBill.setConfirmSiteCode(emisWaybillAjustApply.getApplySiteCode());
emisSettleBill.setBlConfirmSite("1");
emisSettleBill.setConfirmSiteDate(new Date());
emisSettleBill.setId(oldSettleBill.getId());
emisSettleBill.setConfirmSiteNote("[单证专属]申请调整费用-自动确认");
emisSettleBillService.updateEmisSettleBill(emisSettleBill);
emisBaseService.confirmBillByCenter(updSubBillByCenter);
// 重新计算账单费用,计算开票状态,计算收款状态
emisSettleBillService.reCalcSettleBillFee(oldSettleBill);
// 判断账单是否已经被合并,若被合并则需要重新计算费用
// 重新计算总账单费用
// 获取账单是否已经被合并,若合并则更新账单费用
if (!StringUtils.isEmpty(oldSubBill.getSettleBillNo())) {
EmisSettleBill oldSettleBill = emisSettleBillService.selectEmisSettleBillBySettleBillNo(oldSubBill.getSettleBillNo());
if (oldSettleBill != null) {
// 触发业务账单自动确认
EmisSettleBill emisSettleBill = new EmisSettleBill();
emisSettleBill.setConfirmSiteManCode(emisWaybillAjustApply.getApplyManCode());
emisSettleBill.setConfirmSiteCode(emisWaybillAjustApply.getApplySiteCode());
emisSettleBill.setBlConfirmSite("1");
emisSettleBill.setConfirmSiteDate(new Date());
emisSettleBill.setId(oldSettleBill.getId());
emisSettleBill.setConfirmSiteNote("[单证专属]申请调整费用-自动确认");
emisSettleBillService.updateEmisSettleBill(emisSettleBill);
emisSettleBillService.reCalcSettleBillInvoiceStatus(oldSubBill.getSettleBillNo());
// 重新计算账单费用,计算开票状态,计算收款状态
emisSettleBillService.reCalcSettleBillFee(oldSettleBill);
emisSettleBillService.reCalcSettleBillInvoiceStatus(oldSubBill.getSettleBillNo());
emisSettleBillService.reCalcSettleBillPayStatus(oldSubBill.getSettleBillNo());
}
emisSettleBillService.reCalcSettleBillPayStatus(oldSubBill.getSettleBillNo());
}
}
}
}
}
return 1;
}