From 0ba0c4038d7aabbf5e26e866ebfe17a59cb8d35a Mon Sep 17 00:00:00 2001 From: linfso Date: Tue, 16 Jul 2024 13:07:23 +0800 Subject: [PATCH] md --- .../erp/emis/service/EmisBaseService.java | 52 ++--- .../service/impl/EmisWaybillServiceImpl.java | 204 ++++++++++-------- 2 files changed, 145 insertions(+), 111 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java index e93b87f78..f0a4d672f 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java @@ -2202,32 +2202,32 @@ public class EmisBaseService { }else{ // 重复则只修改,不增加 - EmisCustomerAddress queryObj=new EmisCustomerAddress(); - queryObj.setCounty(emisCustomerAddressNew.getCounty()); - queryObj.setName(emisCustomerAddressNew.getName()); - queryObj.setPhone(emisCustomerAddressNew.getPhone()); - queryObj.setProvince(emisCustomerAddressNew.getProvince()); - queryObj.setCity(emisCustomerAddressNew.getCity()); - queryObj.setCounty(emisCustomerAddressNew.getCounty()); - queryObj.setAddressType(emisCustomerAddressNew.getAddressType()); - queryObj.setAddress(emisCustomerAddressNew.getAddress()); - queryObj.setCompany(emisCustomerAddressNew.getCompany()); - - List existList=emisCustomerAddressMapper.selectExistAddressList(queryObj); - // 重复数据需要修正地址的客户归属 - if(existList!=null){ - for (EmisCustomerAddress cusddress:existList) { - if(StringUtils.isEmpty(cusddress.getCustomerCode())){ - // 增加使用站点 - String useSiteCode = emisCustomerAddressNew.getUseSiteCode(); - if(useSiteCode.indexOf(emisCustomerAddressNew.getUseSiteCode())==-1){ - cusddress.setUseSiteCode(useSiteCode+","+emisCustomerAddressNew.getUseSiteCode()); - } - cusddress.setCustomerCode(emisCustomerAddressNew.getCustomerCode()); - emisCustomerAddressMapper.updateAddessCustomerCodeAndUseSite(cusddress); - } - } - } +// EmisCustomerAddress queryObj=new EmisCustomerAddress(); +// queryObj.setCounty(emisCustomerAddressNew.getCounty()); +// queryObj.setName(emisCustomerAddressNew.getName()); +// queryObj.setPhone(emisCustomerAddressNew.getPhone()); +// queryObj.setProvince(emisCustomerAddressNew.getProvince()); +// queryObj.setCity(emisCustomerAddressNew.getCity()); +// queryObj.setCounty(emisCustomerAddressNew.getCounty()); +// queryObj.setAddressType(emisCustomerAddressNew.getAddressType()); +// queryObj.setAddress(emisCustomerAddressNew.getAddress()); +// queryObj.setCompany(emisCustomerAddressNew.getCompany()); +// +// List existList=emisCustomerAddressMapper.selectExistAddressList(queryObj); +// // 重复数据需要修正地址的客户归属 +// if(existList!=null){ +// for (EmisCustomerAddress cusddress:existList) { +// if(StringUtils.isEmpty(cusddress.getCustomerCode())){ +// // 增加使用站点 +// String useSiteCode = emisCustomerAddressNew.getUseSiteCode(); +// if(useSiteCode.indexOf(emisCustomerAddressNew.getUseSiteCode())==-1){ +// cusddress.setUseSiteCode(useSiteCode+","+emisCustomerAddressNew.getUseSiteCode()); +// } +// cusddress.setCustomerCode(emisCustomerAddressNew.getCustomerCode()); +// emisCustomerAddressMapper.updateAddessCustomerCodeAndUseSite(cusddress); +// } +// } +// } } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java index 429f7f448..d08344809 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java @@ -1054,39 +1054,61 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb emisWaybillSave.setOrderSn(orderSn); } - // 登记网点 - if(isNew) { - emisWaybillSave.setRegisterSiteCode(getCurrentUser().getOwnerSiteCode()); - emisWaybillSave.setRegisterManCode(getCurrentUser().getEmpCode()); - emisWaybillSave.setRegisterDate(new Date()); + + if( StringUtils.isAnyEmpty( + emisWaybillSave.getTransLineType(), + emisWaybillSave.getProductType() + ) + ) { + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"线路、产品必填"); } - if(isNew) { - emisWaybillSave.setDataFrom(WaybillHelper.getDataFrom()); - } - if(emisWaybillSave.getFreight().floatValue()<=0.0f){ + // 检查数据 + if(emisWaybillSave.getFreight()==null || emisWaybillSave.getFreight().floatValue()<=0.0f){ throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"运费必须大于0"); } - if (emisWaybillSave.getSettlementWeight().floatValue() <= 0.0f - || emisWaybillSave.getTotalVolume().floatValue() <= 0.0f - || emisWaybillSave.getBillWeight().floatValue() <= 0.0f - || emisWaybillSave.getVolumeWeight().floatValue() <= 0.0f - ) { - throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "结算重量,体积,体积重量,实重必须大于0"); + + + if(emisWaybillSave.getBillWeight()==null || emisWaybillSave.getBillWeight().floatValue()<=0.0f){ + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"实重必须大于0"); } - if(StringUtils.isAnyEmpty( - emisWaybillSave.getPickupMethod(), - emisWaybillSave.getDispatchMethod(), - emisWaybillSave.getCustomsEclaration(), - emisWaybillSave.getCustomsClear() - ) - ){ - throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"取件方式,派送方式,报关方式,清关方式必填"); + if(emisWaybillSave.getTotalVolume()==null || emisWaybillSave.getTotalVolume().floatValue()<=0.0f){ + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"体积必须大于0"); } + if(emisWaybillSave.getSettlementWeight()==null || emisWaybillSave.getSettlementWeight().floatValue()<=0.0f){ + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"结算重量必须大于0"); + } + + if(emisWaybillSave.getVolumeWeight()==null || emisWaybillSave.getVolumeWeight().floatValue()<=0.0f){ + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"体积重量必须大于0"); + } + + if(StringUtils.isEmpty(emisWaybillSave.getPickupMethod())){ + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"取件方式必填"); + } + + if(StringUtils.isEmpty(emisWaybillSave.getDispatchMethod())){ + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"派送方式必填"); + } + + if(StringUtils.isEmpty(emisWaybillSave.getCustomsEclaration())){ + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"报关方式必填"); + } + + if(StringUtils.isEmpty(emisWaybillSave.getCustomsClear())){ + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"清关方式必填"); + } + + + if(StringUtils.isEmpty(emisWaybillSave.getPaymentType())){ + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"支付方式必填"); + } + + if(StringUtils.isEmpty(emisWaybillSave.getCalcFeeType())){ throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"计费方式必填"); } @@ -1096,22 +1118,81 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"寄件网点必填"); } - // 寄件网点财务中心 - EmisSite sendSite = getSiteByCode(emisWaybillSave.getSendSiteCode()); - if(sendSite!=null) { - emisWaybillSave.setSendCenterCode(sendSite.getParentSiteCode()); + // 寄件地址 + if(StringUtils.isAnyEmpty( + emisWaybillSave.getSendCountry(), + emisWaybillSave.getSendName(), + emisWaybillSave.getSendMobile(), + emisWaybillSave.getSendProvince(), + emisWaybillSave.getSendAddress() + ) + ){ + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"寄件人信息不完整检查名称, 电话,国家,省份,地址必填"); } + // 收件地址 + if(StringUtils.isAnyEmpty( + emisWaybillSave.getReceiveCountry(), + emisWaybillSave.getReceiveName(), + emisWaybillSave.getReceiveMobile(), + emisWaybillSave.getReceiveProvince(), + emisWaybillSave.getReceiveAddress() + ) + + ){ + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"收件人信息不完整,名称, 电话,国家,省份,地址必填"); + } + + + if(StringUtils.isEmpty(emisWaybillSave.getPackType())){ throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"包装类型必填"); } - // 目的网点 if(StringUtils.isEmpty(emisWaybillSave.getDispatchUnderlingSiteCode())){ throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"目的网点必填"); } + if(isNew) { + if( emisWaybillSave.getSendDate()==null ){ + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"发件日期必填"); + } + } + + // 判断网点余额-运单金额 是否足够,如果不够则不允许下单 + EmisSiteAccount emisSiteAccount = getSiteAccountBySiteCode(emisWaybillSave.getSendSiteCode()); + if (emisSiteAccount == null) { + throw new EmisBizError(EmisBizErrorType.FAIL, "网点结算账户不存在,请先开结算账户"); + } + + BigDecimal curMoney = emisSiteAccount.getCurMoney(); + BigDecimal closeMoney = emisSiteAccount.getCloseMoney(); + + BigDecimal newCurMoney = curMoney.subtract(emisWaybillSave.getFreight()); + if (newCurMoney.compareTo(closeMoney) == -1) { + throw new EmisBizError(EmisBizErrorType.FAIL, "网点余额不足,请充值"); + } + + // -------------------------- + // 登记网点 + if(isNew) { + emisWaybillSave.setRegisterSiteCode(getCurrentUser().getOwnerSiteCode()); + emisWaybillSave.setRegisterManCode(getCurrentUser().getEmpCode()); + emisWaybillSave.setRegisterDate(new Date()); + } + + if(isNew) { + emisWaybillSave.setDataFrom(WaybillHelper.getDataFrom()); + } + + + // 寄件网点财务中心 + EmisSite sendSite = getSiteByCode(emisWaybillSave.getSendSiteCode()); + if(sendSite!=null) { + emisWaybillSave.setSendCenterCode(sendSite.getParentSiteCode()); + } + // 订单运单初始状态 订单为已接单,运单未初始,待揽收 emisWaybillSave.setOrderStatus("1"); emisWaybillSave.setWaybillStatus("0"); @@ -1144,18 +1225,7 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb // 订单类型为正式单 emisWaybillSave.setOrderType("1"); - // 寄件地址 - if(StringUtils.isAnyEmpty( - emisWaybillSave.getSendCountry(), - emisWaybillSave.getSendName(), - emisWaybillSave.getSendMobile(), - emisWaybillSave.getSendProvince(), - emisWaybillSave.getSendAddress() - ) - ){ - throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"寄件人信息不完整,名称, 电话,国家,省份,地址必填"); - } - + // 发件地址 EmisCustomerAddress sendAddress = new EmisCustomerAddress(); sendAddress.setCountry(emisWaybillSave.getSendCountry()); sendAddress.setName(emisWaybillSave.getSendName()); @@ -1171,19 +1241,8 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb sendAddress.setUseSiteCode(emisWaybillSave.getSendSiteCode()); sendAddress.setAddressType("1"); + // 收件地址 - if(StringUtils.isAnyEmpty( - emisWaybillSave.getReceiveCountry(), - emisWaybillSave.getReceiveName(), - emisWaybillSave.getReceiveMobile(), - emisWaybillSave.getReceiveProvince(), - emisWaybillSave.getReceiveAddress() - ) - - ){ - throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"收件人信息不完整,名称, 电话,国家,省份,地址必填"); - } - EmisCustomerAddress recieveAddress = new EmisCustomerAddress(); recieveAddress.setCountry(emisWaybillSave.getReceiveCountry()); recieveAddress.setName(emisWaybillSave.getReceiveName()); @@ -1203,10 +1262,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb String customerCode=null; String customerName=null; - if( emisWaybillSave.getPaymentType()==null) { - throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"支付方式必填"); - } - // 月结客户直接根据月结编号获取客户编码和名称 if( "2".equals(emisWaybillSave.getPaymentType()) @@ -1249,6 +1304,9 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb newEmisCustomerUser.setSettledType("1"); newEmisCustomerUser.setUserType("1"); + newEmisCustomerUser.setBlOpenOms("0"); + newEmisCustomerUser.setRemark("开单自动生成的现金用户"); + // 预置主归属网点 newEmisCustomerUser.setOwnerSite(emisWaybillSave.getSendSiteCode()); EmisCustomerUser newUser=createCustomerUser(newEmisCustomerUser); @@ -1300,24 +1358,15 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb } } - // 保存客户收件、寄件地址 - sendAddress.setCustomerCode(customerCode); - recieveAddress.setCustomerCode(customerCode); + // 保存客户收件、寄件地址,开单不要关联客户地址数据 +// sendAddress.setCustomerCode(customerCode); +// recieveAddress.setCustomerCode(customerCode); createCustomerAddress(sendAddress); createCustomerAddress(recieveAddress); emisWaybillSave.setCustomerCode(customerCode); emisWaybillSave.setCustomerName(customerName); - if( StringUtils.isAnyEmpty( - emisWaybillSave.getTransLineType(), - emisWaybillSave.getProductType() - ) - ) { - throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"线路、产品必填"); - } - - // 获取泡重比 EmisTransLine emisTransLine = getTransLineByCode(emisWaybillSave.getTransLineType()); @@ -1331,11 +1380,8 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb emisWaybillSave.setSendDate(new Date()); } - if(isNew) { - if( emisWaybillSave.getSendDate()==null ){ - throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"发件日期必填"); - } - } + + // 开单当天不算时效 Date estDate = getEstimateDate( emisWaybillSave.getSendDate(),emisWaybillSave.getProductType(), @@ -1372,19 +1418,7 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb } } - // 判断网点余额-运单金额 是否足够,如果不够则不允许下单 - EmisSiteAccount emisSiteAccount = getSiteAccountBySiteCode(emisWaybillSave.getSendSiteCode()); - if (emisSiteAccount == null) { - throw new EmisBizError(EmisBizErrorType.FAIL, "网点结算账户不存在,请先开结算账户"); - } - BigDecimal curMoney = emisSiteAccount.getCurMoney(); - BigDecimal closeMoney = emisSiteAccount.getCloseMoney(); - - BigDecimal newCurMoney = curMoney.subtract(emisWaybillSave.getFreight()); - if (newCurMoney.compareTo(closeMoney) == -1) { - throw new EmisBizError(EmisBizErrorType.FAIL, "网点余额不足,请充值"); - } // 公共计算部分 calcWayBillCommonInfo(emisWaybillSave,true);