From 741e6a4250d9120e1b41d3f88e2940e8043d9936 Mon Sep 17 00:00:00 2001 From: linfso Date: Tue, 16 Jul 2024 13:48:25 +0800 Subject: [PATCH] md --- .../service/impl/EmisWaybillServiceImpl.java | 346 +++++++----------- 1 file changed, 125 insertions(+), 221 deletions(-) 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 d08344809..bb7537e13 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 @@ -331,7 +331,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb if(transLine==null){ throw new EmisBizError(EmisBizErrorType.NOT_EXISTS, "线路不正确"); } - emisWaybillSave.setTransLineType(transLine.getLineCode()); // 产品转换 @@ -358,7 +357,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb emisWaybillSave.setReceiveCity(rcvCityCode); emisWaybillSave.setReceiveCounty(rcvDistrictCode); - // 寄件国家省市区 String sendCountryCode=getCountryCodeByName(emisWaybillSave.getSendCountry()); if(sendCountryCode==null){ @@ -524,9 +522,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb } } - - - // 计算目的地 EmisDestination destination=calcDestSiteByBase(receiveCountryCode,transLine.getLineCode(),rcvProviceCode,rcvCityCode,rcvDistrictCode,emisWaybillSave.getReceiveAddress()); if(destination==null){ @@ -779,6 +774,82 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb emisWaybillSave.setOrderSn(orderSn); } + if( StringUtils.isAnyEmpty( + emisWaybillSave.getTransLineType(), + emisWaybillSave.getProductType() + ) + ) { + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"线路、产品必填"); + } + + // 检查数据 + if(emisWaybillSave.getBillWeight()==null || emisWaybillSave.getBillWeight().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,"计费方式必填"); + emisWaybillSave.setCalcFeeType("1"); + } + + // 寄件地址 + 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())){ + emisWaybillSave.setPackType("2"); + } + + if(isNew) { + if( emisWaybillSave.getSendDate()==null ){ + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"发件日期必填"); + } + } + // 登记网点 if(isNew) { if(!StringUtils.isEmpty(emisWaybillSave.getSendSiteCode())) { @@ -787,8 +858,7 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb // 没有寄件网点则登记网点放到总部 emisWaybillSave.setRegisterSiteCode("88888"); } - -// emisWaybillSave.setRegisterManCode(getCurrentUser().getEmpCode()); + emisWaybillSave.setRegisterManCode("1"); emisWaybillSave.setRegisterDate(new Date()); } @@ -796,32 +866,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb emisWaybillSave.setDataFrom(WaybillHelper.getDataFrom()); } - if(emisWaybillSave.getFreight().floatValue()<=0.0f){ -// throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"运费必须大于0"); - } -// emisWaybillSave.getTotalVolume().floatValue() <=0.0f - if( - 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,"取件方式,派送方式,报关方式,清关方式必填"); - } - - // 默认按重量计费 - emisWaybillSave.setCalcFeeType("1"); -// if(StringUtils.isEmpty(emisWaybillSave.getCalcFeeType())){ -// throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"计费方式必填"); -// } - // 发件网点 if(StringUtils.isEmpty(emisWaybillSave.getSendSiteCode())){ // throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"寄件网点必填"); @@ -834,16 +878,7 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb } } - if(StringUtils.isEmpty(emisWaybillSave.getPackType())){ - throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"包装类型必填"); - } - - // 目的网点 - if(StringUtils.isEmpty(emisWaybillSave.getDispatchUnderlingSiteCode())){ -// throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"目的网点必填"); - } - - // 计算单据归属 + // oms 客户必须存在 String customerCode = emisWaybillSave.getCustomerCode(); String customerName = emisWaybillSave.getCustomerName(); @@ -878,17 +913,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb emisWaybillSave.setOrderType("0"); // 寄件地址 - 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()); @@ -905,18 +929,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb 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()); @@ -931,9 +943,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb recieveAddress.setUseSiteCode(emisWaybillSave.getSendSiteCode()); recieveAddress.setAddressType("2"); - if( emisWaybillSave.getPaymentType()==null) { - throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"支付方式必填"); - } // 月结客户直接根据月结编号获取客户编码和名称 if( @@ -946,17 +955,10 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb if(emisCustomerUser==null){ throw new EmisBizError(EmisBizErrorType.FAIL,"月结客户不存在"); } + emisWaybillSave.setCustName(emisCustomerUser.getCustName()); emisWaybillSave.setSalesmen(emisCustomerUser.getSalesmen()); emisWaybillSave.setPayee(emisCustomerUser.getPayee()); } - // 到付 - else if( "3".equals(emisWaybillSave.getPaymentType()) ) { - - } - // 寄付和其他 - else{ - - } // 保存客户收件、寄件地址 sendAddress.setCustomerCode(customerCode); @@ -964,17 +966,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb 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()); emisWaybillSave.setMeterType(emisTransLine.getMeterRate()); @@ -987,18 +978,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb emisWaybillSave.setSendDate(new Date()); } -// // 计算目的地 -// EmisDestination destination=calcDestSiteByBase(emisWaybillSave.getReceiveCountry(),emisWaybillSave.getTransLineType(), -// emisWaybillSave.getReceiveProvince(),emisWaybillSave.getReceiveCity(), -// emisWaybillSave.getReceiveCounty(), -// emisWaybillSave.getReceiveAddress()); -// if(destination==null){ -// throw new EmisBizError(EmisBizErrorType.NOT_EXISTS, "找不到目的地"); -// } -// -// emisWaybillSave.setDestinationCode(destination.getDestCode()); -// emisWaybillSave.setDispatchUnderlingSiteCode(destination.getSiteCode()); - try { // 计算体积重量 calcVolumeWeight(emisWaybillSave); @@ -1012,11 +991,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb } - if(isNew) { - if( emisWaybillSave.getSendDate()==null ){ - throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"发件日期必填"); - } - } // 开单当天不算时效 Date estDate = getEstimateDate( emisWaybillSave.getSendDate(),emisWaybillSave.getProductType(), @@ -1143,8 +1117,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"收件人信息不完整,名称, 电话,国家,省份,地址必填"); } - - if(StringUtils.isEmpty(emisWaybillSave.getPackType())){ throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"包装类型必填"); } @@ -1262,112 +1234,68 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb String customerCode=null; String customerName=null; + // 通过电话判断客户是否存在 + String sendPhone=getCompletePhone(sendAddress.getPhone()); + EmisCustomerUser emisCustomerUser=getCustomerUserByPhone(sendPhone); + if(emisCustomerUser!=null){ + customerCode=emisCustomerUser.getCustomerCode(); + customerName=emisCustomerUser.getCustomerName(); + }else{ + // 先创建客户 + EmisCustomerUser newEmisCustomerUser = new EmisCustomerUser(); + newEmisCustomerUser.setCustomerName(sendAddress.getName()); + newEmisCustomerUser.setCountry(sendAddress.getCountry()); + newEmisCustomerUser.setPhone(sendPhone); + newEmisCustomerUser.setProvince(sendAddress.getProvince()); + newEmisCustomerUser.setCity(sendAddress.getCity()); + newEmisCustomerUser.setCounty(sendAddress.getCounty()); + newEmisCustomerUser.setTown(sendAddress.getTown()); + newEmisCustomerUser.setEmail(sendAddress.getEmail()); + newEmisCustomerUser.setAddress(sendAddress.getAddress()); + newEmisCustomerUser.setCompany(sendAddress.getCompany()); + newEmisCustomerUser.setCustomerType("1"); + newEmisCustomerUser.setSettledType("1"); + newEmisCustomerUser.setUserType("1"); + + newEmisCustomerUser.setBlOpenOms("0"); + newEmisCustomerUser.setRemark("开单自动生成的现金用户"); + + newEmisCustomerUser.setSalesmen(emisWaybillSave.getSalesmen()); + newEmisCustomerUser.setPayee(emisWaybillSave.getPayee()); + + // 预置主归属网点 + newEmisCustomerUser.setOwnerSite(emisWaybillSave.getSendSiteCode()); + EmisCustomerUser newUser=createCustomerUser(newEmisCustomerUser); + + customerCode = newUser.getCustomerCode(); + customerName = newUser.getCustomerName(); + } + + emisWaybillSave.setCustomerCode(customerCode); + emisWaybillSave.setCustomerName(customerName); + // 月结客户直接根据月结编号获取客户编码和名称 - if( - "2".equals(emisWaybillSave.getPaymentType()) + if("2".equals(emisWaybillSave.getPaymentType()) || "4".equals(emisWaybillSave.getPaymentType()) || "5".equals(emisWaybillSave.getPaymentType()) ){ - EmisCustomerUser emisCustomerUser=getCustomerUserByMonthlyPayCode(emisWaybillSave.getCustNo()); - if(emisCustomerUser==null){ + EmisCustomerUser emisMonthCustomerUser=getCustomerUserByMonthlyPayCode(emisWaybillSave.getCustNo()); + if(emisMonthCustomerUser==null){ throw new EmisBizError(EmisBizErrorType.FAIL,"月结客户不存在"); } - customerCode=emisCustomerUser.getCustomerCode(); - customerName=emisCustomerUser.getCustomerName(); - } - // 到付 - else if( "3".equals(emisWaybillSave.getPaymentType()) ) { - - // - String recievePhone=getCompletePhone(recieveAddress.getPhone()); - // 通过电话判断客户是否存在 - EmisCustomerUser emisCustomerUser=getCustomerUserByPhone(recievePhone); - if(emisCustomerUser!=null){ - customerCode=emisCustomerUser.getCustomerCode(); - customerName=emisCustomerUser.getCustomerName(); - }else{ - // 先创建客户 - EmisCustomerUser newEmisCustomerUser = new EmisCustomerUser(); - - newEmisCustomerUser.setCustomerName(recieveAddress.getName()); - newEmisCustomerUser.setCountry(recieveAddress.getCountry()); - newEmisCustomerUser.setPhone(recievePhone); - newEmisCustomerUser.setProvince(recieveAddress.getProvince()); - newEmisCustomerUser.setCity(recieveAddress.getCity()); - newEmisCustomerUser.setCounty(recieveAddress.getCounty()); - newEmisCustomerUser.setTown(recieveAddress.getTown()); - newEmisCustomerUser.setEmail(recieveAddress.getEmail()); - newEmisCustomerUser.setAddress(recieveAddress.getAddress()); - newEmisCustomerUser.setCompany(recieveAddress.getCompany()); - newEmisCustomerUser.setCustomerType("1"); - newEmisCustomerUser.setSettledType("1"); - newEmisCustomerUser.setUserType("1"); - - newEmisCustomerUser.setBlOpenOms("0"); - newEmisCustomerUser.setRemark("开单自动生成的现金用户"); - - // 预置主归属网点 - newEmisCustomerUser.setOwnerSite(emisWaybillSave.getSendSiteCode()); - EmisCustomerUser newUser=createCustomerUser(newEmisCustomerUser); - - customerCode = newUser.getCustomerCode(); - customerName = newUser.getCustomerName(); - } - - - } - // 寄付和其他 - else{ - // 通过电话判断客户是否存在 - String sendPhone=getCompletePhone(sendAddress.getPhone()); - EmisCustomerUser emisCustomerUser=getCustomerUserByPhone(sendPhone); - if(emisCustomerUser!=null){ - customerCode=emisCustomerUser.getCustomerCode(); - customerName=emisCustomerUser.getCustomerName(); - }else{ - // 先创建客户 - EmisCustomerUser newEmisCustomerUser = new EmisCustomerUser(); - - newEmisCustomerUser.setCustomerName(sendAddress.getName()); - newEmisCustomerUser.setCountry(sendAddress.getCountry()); - newEmisCustomerUser.setPhone(sendPhone); - newEmisCustomerUser.setProvince(sendAddress.getProvince()); - newEmisCustomerUser.setCity(sendAddress.getCity()); - newEmisCustomerUser.setCounty(sendAddress.getCounty()); - newEmisCustomerUser.setTown(sendAddress.getTown()); - newEmisCustomerUser.setEmail(sendAddress.getEmail()); - newEmisCustomerUser.setAddress(sendAddress.getAddress()); - newEmisCustomerUser.setCompany(sendAddress.getCompany()); - newEmisCustomerUser.setCustomerType("1"); - newEmisCustomerUser.setSettledType("1"); - newEmisCustomerUser.setUserType("1"); - - newEmisCustomerUser.setBlOpenOms("0"); - newEmisCustomerUser.setRemark("开单自动生成的现金用户"); - - newEmisCustomerUser.setSalesmen(emisWaybillSave.getSalesmen()); - newEmisCustomerUser.setPayee(emisWaybillSave.getPayee()); - - // 预置主归属网点 - newEmisCustomerUser.setOwnerSite(emisWaybillSave.getSendSiteCode()); - EmisCustomerUser newUser=createCustomerUser(newEmisCustomerUser); - - customerCode = newUser.getCustomerCode(); - customerName = newUser.getCustomerName(); - } + emisWaybillSave.setCustName(emisMonthCustomerUser.getCustName()); } // 保存客户收件、寄件地址,开单不要关联客户地址数据 -// sendAddress.setCustomerCode(customerCode); -// recieveAddress.setCustomerCode(customerCode); + sendAddress.setCustomerCode(customerCode); + recieveAddress.setCustomerCode(customerCode); createCustomerAddress(sendAddress); createCustomerAddress(recieveAddress); emisWaybillSave.setCustomerCode(customerCode); emisWaybillSave.setCustomerName(customerName); - // 获取泡重比 EmisTransLine emisTransLine = getTransLineByCode(emisWaybillSave.getTransLineType()); emisWaybillSave.setMeterType(emisTransLine.getMeterRate()); @@ -1380,8 +1308,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb emisWaybillSave.setSendDate(new Date()); } - - // 开单当天不算时效 Date estDate = getEstimateDate( emisWaybillSave.getSendDate(),emisWaybillSave.getProductType(), @@ -1418,8 +1344,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb } } - - // 公共计算部分 calcWayBillCommonInfo(emisWaybillSave,true); @@ -1516,27 +1440,7 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb */ private void addNewWaybillByOms(EmisWaybill emisWaybillSave) throws EmisBizError { - // 子单号做扣减 -// if("1".equals(emisWaybillSave.getBlGenSubbill())) { -// int subBillCount = emisElectronicSitePagService.getTotalAvailablePagCount(emisWaybillSave.getSendSiteCode(), "T7080", "1002"); -// if(subBillCount<=0){ -// throw new EmisBizError(EmisBizErrorType.FAIL,"子单数量不足"); -// } -// } - // 判断网点余额-运单金额 是否足够,如果不够则不允许下单 -// 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,"网点余额不足,请充值"); -// } // 公共计算部分 calcWayBillCommonInfoByOms(emisWaybillSave,true);