This commit is contained in:
linfso 2024-07-16 13:48:25 +08:00
parent 0ba0c4038d
commit 741e6a4250

View File

@ -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);