diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java index 554e856d4..e5c71556b 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java @@ -60,9 +60,9 @@ public class EmisWaybill extends BaseEntity private Date orderDate; /* 客户ID */ private Long userId; - /* 寄件客户编号2502021 */ + /* 客户编号2502021 */ private String customerCode; - /* 寄件客户客户名称 */ + /* 客户名称 */ private String customerName; /* 收件客户编号2502021 */ private String receiveCustomerCode; diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisCustomerAddressMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisCustomerAddressMapper.java index 86ac20476..0028e785b 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisCustomerAddressMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisCustomerAddressMapper.java @@ -10,6 +10,7 @@ */ package com.xdadan.erp.emis.mapper; +import java.util.Date; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xdadan.erp.emis.domain.EmisCustomerAddress; @@ -24,6 +25,8 @@ import org.apache.ibatis.annotations.Update; */ public interface EmisCustomerAddressMapper extends BaseMapper { + + /** * 主键查询 * @param id @@ -88,4 +91,13 @@ public interface EmisCustomerAddressMapper extends BaseMapper */ public Long selectMaxCustomerCodeBySite(String ownSiteCode); + + public EmisCustomerUser selectEmisCustomerUserByPhone(String phone); + + + } 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 faa2693ed..cd49be31d 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 @@ -220,6 +220,15 @@ public class EmisBaseService { return list.get(0); } + /** + * 根据手机号获取客户信息 + * @param phone + * @return + */ + public EmisCustomerUser getCustomerUserByPhone(String phone){ + return emisCustomerUserMapper.selectEmisCustomerUserByPhone(phone); + } + /** * 根据月结编号获取客户信息 * @param monthlyPayCode @@ -512,119 +521,51 @@ public class EmisBaseService { return emisCustomerUser; } - // 判断国家+电话是否唯一 - EmisCustomerUser queryEmisCustomerUser = new EmisCustomerUser(); - queryEmisCustomerUser.setCountry(emisCustomerUser.getCountry()); - queryEmisCustomerUser.setPhone(emisCustomerUser.getPhone()); - List emisCustomerUserList=emisCustomerUserMapper.selectEmisCustomerUserList(queryEmisCustomerUser); - if(CollectionUtils.isEmpty(emisCustomerUserList)){ - // 产生 customerCode - String siteCode = emisCustomerUser.getOwnerSite(); - if(StringUtils.isEmpty(siteCode)){ - siteCode="88888"; - } - String customerCode=genCustomerCode(siteCode); - emisCustomerUser.setCustomerCode(customerCode); - emisCustomerUser.setOwnerSite(siteCode); - emisCustomerUser.setUserName(emisCustomerUser.getCustomerCode()); - -// emisCustomerUser.setCustomerType("1"); -// emisCustomerUser.setSettledType("1"); -// emisCustomerUser.setUserType("1"); - - emisCustomerUser.preInsert(); - - emisCustomerUserMapper.insertEmisCustomerUser(emisCustomerUser); - - return emisCustomerUser; - }else{ - return emisCustomerUserList.get(0); + EmisCustomerUser oldUser=getCustomerUserByPhone(emisCustomerUser.getPhone()); + if(oldUser!=null){ + return oldUser; } + + // 产生 customerCode + String siteCode = emisCustomerUser.getOwnerSite(); + if(StringUtils.isEmpty(siteCode)){ + siteCode="88888"; + } + // 根据所属网点获取客户编码 + String customerCode=genCustomerCode(siteCode); + + // 插入现金客户数据 + emisCustomerUser.setCustomerCode(customerCode); + emisCustomerUser.setOwnerSite(siteCode); + emisCustomerUser.setUserName(emisCustomerUser.getCustomerCode()); + emisCustomerUser.setCustomerType("1"); + emisCustomerUser.setSettledType("1"); + emisCustomerUser.setUserType("1"); + + emisCustomerUser.preInsert(); + emisCustomerUserMapper.insertEmisCustomerUser(emisCustomerUser); + + return emisCustomerUser; } - /** - * 根据添加的地址增加客户 - * @param emisCustomerAddressNew - * @return - */ - public EmisCustomerAddress createCustomerAddress(EmisCustomerAddress emisCustomerAddressNew){ - // 根据关键字段查询 - EmisCustomerAddress queryEmisCustomerAddress = new EmisCustomerAddress(); - queryEmisCustomerAddress.setCustomerCode(emisCustomerAddressNew.getCustomerCode()); - queryEmisCustomerAddress.setCountry(emisCustomerAddressNew.getCountry()); - queryEmisCustomerAddress.setName(emisCustomerAddressNew.getName()); - queryEmisCustomerAddress.setPhone(emisCustomerAddressNew.getPhone()); - queryEmisCustomerAddress.setProvince(emisCustomerAddressNew.getProvince()); - queryEmisCustomerAddress.setCity(emisCustomerAddressNew.getCity()); - queryEmisCustomerAddress.setCounty(emisCustomerAddressNew.getCounty()); - queryEmisCustomerAddress.setTown(emisCustomerAddressNew.getTown()); - queryEmisCustomerAddress.setEmail(emisCustomerAddressNew.getEmail()); - queryEmisCustomerAddress.setAddress(emisCustomerAddressNew.getAddress()); - queryEmisCustomerAddress.setCompany(emisCustomerAddressNew.getCompany()); - queryEmisCustomerAddress.setAddressType(emisCustomerAddressNew.getAddressType()); - List emisCustomerAddressList=emisCustomerAddressMapper.selectEmisCustomerAddressList(queryEmisCustomerAddress); - // 无数据是新客户 - if(CollectionUtils.isEmpty(emisCustomerAddressList)){ - // 先创建客户 - EmisCustomerUser newEmisCustomerUser = new EmisCustomerUser(); - newEmisCustomerUser.setCustomerName(emisCustomerAddressNew.getName()); - newEmisCustomerUser.setCountry(emisCustomerAddressNew.getCountry()); - newEmisCustomerUser.setPhone(emisCustomerAddressNew.getPhone()); - newEmisCustomerUser.setProvince(emisCustomerAddressNew.getProvince()); - newEmisCustomerUser.setCity(emisCustomerAddressNew.getCity()); - newEmisCustomerUser.setCounty(emisCustomerAddressNew.getCounty()); - newEmisCustomerUser.setTown(emisCustomerAddressNew.getTown()); - newEmisCustomerUser.setEmail(emisCustomerAddressNew.getEmail()); - newEmisCustomerUser.setAddress(emisCustomerAddressNew.getAddress()); - newEmisCustomerUser.setCompany(emisCustomerAddressNew.getCompany()); - newEmisCustomerUser.setOwnerSite(emisCustomerAddressNew.getUseSiteCode()); - - EmisCustomerUser emisCustomerUser=createCustomerUser(newEmisCustomerUser); - - // 创建地址 - emisCustomerAddressNew.setId(null); - emisCustomerAddressNew.setCustomerCode(emisCustomerUser.getCustomerCode()); - emisCustomerAddressNew.preInsert(); - emisCustomerAddressMapper.insertEmisCustomerAddress(emisCustomerAddressNew); - - return emisCustomerAddressNew; - } - - String customerCode = null; - // 检查地址是否有归属,没有归属则更新 - for(EmisCustomerAddress addresItem:emisCustomerAddressList){ - - if(StringUtils.isEmpty(addresItem.getCustomerCode())){ - // 先创建客户 - EmisCustomerUser newEmisCustomerUser = new EmisCustomerUser(); - newEmisCustomerUser.setCustomerName(addresItem.getName()); - newEmisCustomerUser.setCountry(addresItem.getCountry()); - newEmisCustomerUser.setPhone(addresItem.getPhone()); - newEmisCustomerUser.setProvince(addresItem.getProvince()); - newEmisCustomerUser.setCity(addresItem.getCity()); - newEmisCustomerUser.setCounty(addresItem.getCounty()); - newEmisCustomerUser.setTown(addresItem.getTown()); - newEmisCustomerUser.setEmail(addresItem.getEmail()); - newEmisCustomerUser.setAddress(addresItem.getAddress()); - newEmisCustomerUser.setCompany(addresItem.getCompany()); - - newEmisCustomerUser.setOwnerSite(addresItem.getUseSiteCode()); - - EmisCustomerUser emisCustomerUser=createCustomerUser(newEmisCustomerUser); - - customerCode = emisCustomerUser.getCustomerCode(); - addresItem.setCustomerCode(customerCode); - emisCustomerAddressNew.preUpdate(); - emisCustomerAddressMapper.updateEmisCustomerAddress(addresItem); - }else{ - customerCode=addresItem.getCustomerCode(); + /** + * 根据添加的地址增加客户 + * @param emisCustomerAddressNew + * @return + */ + public int createCustomerAddress(EmisCustomerAddress emisCustomerAddressNew){ + if(!StringUtils.isEmpty(emisCustomerAddressNew.getCustomerCode())){ + int cnt=emisCustomerAddressMapper.checkUnique(emisCustomerAddressNew); + if(cnt==0){ + // 不重复的情况则 创建地址 + emisCustomerAddressNew.setId(null); + emisCustomerAddressNew.preInsert(); + return emisCustomerAddressMapper.insertEmisCustomerAddress(emisCustomerAddressNew); } } - emisCustomerAddressNew.setCustomerCode(customerCode); - - return emisCustomerAddressNew; + return 0; } /** diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisCustomerAddressService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisCustomerAddressService.java index a06e760e5..036576cc0 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisCustomerAddressService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisCustomerAddressService.java @@ -75,4 +75,13 @@ public interface IEmisCustomerAddressService */ public int setDefaultAddressById(Long id,String defaultFlag); + /** + * 检查是否重复 + * + * @param emisCustomerAddress + * @return 数量 + */ + public int checkUnique(EmisCustomerAddress emisCustomerAddress); + + } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisCustomerAddressServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisCustomerAddressServiceImpl.java index 0eb2ba270..9e29d12ef 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisCustomerAddressServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisCustomerAddressServiceImpl.java @@ -151,4 +151,17 @@ public class EmisCustomerAddressServiceImpl extends EmisBaseService implements I } + /** + * 检查是否重复 + * + * @param emisCustomerAddress + * @return 数量 + */ + @Override + public int checkUnique(EmisCustomerAddress emisCustomerAddress) + { + return emisCustomerAddressMapper.checkUnique(emisCustomerAddress); + } + + } 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 3ba003164..e97417663 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 @@ -268,7 +268,7 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb * 新增下单 * @param emisWaybillSave */ - private void addWayBill(EmisWaybill emisWaybillSave){ + private void addWayBill(EmisWaybill emisWaybillSave) throws EmisBizError { //补齐数据 emisWaybillSave.preInsert(); @@ -317,27 +317,7 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb // 订单类型为正式单 emisWaybillSave.setOrderType("1"); - // 保存收件地址,并产生客户编号 - String recieveCustomerCode=""; - EmisCustomerAddress recieveAddress = new EmisCustomerAddress(); - recieveAddress.setCountry(emisWaybillSave.getReceiveCountry()); - recieveAddress.setName(emisWaybillSave.getReceiveName()); - recieveAddress.setPhone(emisWaybillSave.getReceiveMobile()); - recieveAddress.setProvince(emisWaybillSave.getReceiveProvince()); - recieveAddress.setCity(emisWaybillSave.getReceiveCity()); - recieveAddress.setCounty(emisWaybillSave.getReceiveCounty()); - recieveAddress.setTown(emisWaybillSave.getReceiveTown()); -// recieveAddress.setEmail(emisWaybillSave); - recieveAddress.setAddress(emisWaybillSave.getReceiveAddress()); - recieveAddress.setCompany(emisWaybillSave.getReceiveCompany()); - recieveAddress.setUseSiteCode(getCurrentUser().getOwnerSiteCode()); - recieveAddress.setAddressType("2"); - EmisCustomerAddress recieveAddressNew=createCustomerAddress(recieveAddress); - recieveCustomerCode = recieveAddressNew.getCustomerCode(); - emisWaybillSave.setReceiveCustomerCode(recieveCustomerCode); - - // 保存寄件地址并产生寄件客户编号 - String sendCustomerCode=""; + // 寄件地址 EmisCustomerAddress sendAddress = new EmisCustomerAddress(); sendAddress.setCountry(emisWaybillSave.getSendCountry()); sendAddress.setName(emisWaybillSave.getSendName()); @@ -349,12 +329,116 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb // recieveAddress.setEmail(emisWaybillSave); sendAddress.setAddress(emisWaybillSave.getSendAddress()); sendAddress.setCompany(emisWaybillSave.getSendCompany()); + sendAddress.setUseSiteCode(getCurrentUser().getOwnerSiteCode()); sendAddress.setAddressType("1"); - EmisCustomerAddress sendAddressNew=createCustomerAddress(sendAddress); - sendCustomerCode = sendAddressNew.getCustomerCode(); - emisWaybillSave.setCustomerCode(sendCustomerCode); + // 收件地址 + EmisCustomerAddress recieveAddress = new EmisCustomerAddress(); + recieveAddress.setCountry(emisWaybillSave.getReceiveCountry()); + recieveAddress.setName(emisWaybillSave.getReceiveName()); + recieveAddress.setPhone(emisWaybillSave.getReceiveMobile()); + recieveAddress.setProvince(emisWaybillSave.getReceiveProvince()); + recieveAddress.setCity(emisWaybillSave.getReceiveCity()); + recieveAddress.setCounty(emisWaybillSave.getReceiveCounty()); + recieveAddress.setTown(emisWaybillSave.getReceiveTown()); +// recieveAddress.setEmail(emisWaybillSave); + recieveAddress.setAddress(emisWaybillSave.getReceiveAddress()); + recieveAddress.setCompany(emisWaybillSave.getReceiveCompany()); + + recieveAddress.setUseSiteCode(getCurrentUser().getOwnerSiteCode()); + recieveAddress.setAddressType("2"); + + // 计算单据归属 + String customerCode=null; + String customerName=null; + + // 月结客户直接根据月结编号获取客户编码和名称 + if( + "2".equals(emisWaybillSave.getPaymentType()) + || "4".equals(emisWaybillSave.getPaymentType()) + || "5".equals(emisWaybillSave.getPaymentType()) + + ){ + EmisCustomerUser emisCustomerUser=getCustomerUserByMonthlyPayCode(emisWaybillSave.getCustNo()); + if(emisCustomerUser==null){ + throw new EmisBizError(EmisBizErrorType.FAIL,"月结客户不存在"); + } + customerCode=emisCustomerUser.getCustomerCode(); + customerName=emisCustomerUser.getCustomerName(); + } + // 到付 + else if( "3".equals(emisWaybillSave.getPaymentType()) ) { + + // 通过电话判断客户是否存在 + EmisCustomerUser emisCustomerUser=getCustomerUserByPhone(recieveAddress.getPhone()); + if(emisCustomerUser!=null){ + customerCode=emisCustomerUser.getCustomerCode(); + customerName=emisCustomerUser.getCustomerName(); + }else{ + // 先创建客户 + EmisCustomerUser newEmisCustomerUser = new EmisCustomerUser(); + + newEmisCustomerUser.setCustomerName(recieveAddress.getName()); + newEmisCustomerUser.setCountry(recieveAddress.getCountry()); + newEmisCustomerUser.setPhone(recieveAddress.getPhone()); + 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.setOwnerSite(emisWaybillSave.getSendSiteCode()); + EmisCustomerUser newUser=createCustomerUser(newEmisCustomerUser); + + customerCode = newUser.getCustomerCode(); + customerName = newUser.getCustomerName(); + } + + + } + // 寄付和其他 + else{ + // 通过电话判断客户是否存在 + EmisCustomerUser emisCustomerUser=getCustomerUserByPhone(sendAddress.getPhone()); + if(emisCustomerUser!=null){ + customerCode=emisCustomerUser.getCustomerCode(); + customerName=emisCustomerUser.getCustomerName(); + }else{ + // 先创建客户 + EmisCustomerUser newEmisCustomerUser = new EmisCustomerUser(); + + newEmisCustomerUser.setCustomerName(sendAddress.getName()); + newEmisCustomerUser.setCountry(sendAddress.getCountry()); + newEmisCustomerUser.setPhone(sendAddress.getPhone()); + 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.setOwnerSite(emisWaybillSave.getSendSiteCode()); + EmisCustomerUser newUser=createCustomerUser(newEmisCustomerUser); + + customerCode = newUser.getCustomerCode(); + customerName = newUser.getCustomerName(); + } + } + + // 保存客户收件、寄件地址 + sendAddress.setCustomerCode(customerCode); + recieveAddress.setCustomerCode(customerCode); + createCustomerAddress(sendAddress); + createCustomerAddress(recieveAddress); + + emisWaybillSave.setCustomerCode(customerCode); + emisWaybillSave.setCustomerName(customerName); // 获取泡重比 EmisTransLine emisTransLine = getTransLineByCode(emisWaybillSave.getTransLineType()); @@ -380,23 +464,13 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb if("1".equals(emisWaybillSave.getBlGenSubbill()) ){ // 子单号拼接 StringBuilder sb = new StringBuilder(); - for(int i=0;i + + + + \ No newline at end of file diff --git a/emis-biz/src/main/resources/mapper/EmisCustomerUserMapper.xml b/emis-biz/src/main/resources/mapper/EmisCustomerUserMapper.xml index 7bee01a37..461d8f093 100644 --- a/emis-biz/src/main/resources/mapper/EmisCustomerUserMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisCustomerUserMapper.xml @@ -370,4 +370,11 @@ select max(CONVERT(customer_code,SIGNED)) as code from emis_customer_user where owner_site = #{ownSiteCode} + + + \ No newline at end of file