This commit is contained in:
linfso 2024-05-22 18:06:36 +08:00
parent 514a5046ae
commit 0128a89340
9 changed files with 227 additions and 145 deletions

View File

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

View File

@ -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<EmisCustomerAddress>
{
/**
* 主键查询
* @param id
@ -88,4 +91,13 @@ public interface EmisCustomerAddressMapper extends BaseMapper<EmisCustomerAddres
public int cancelCustomerDefaultFlag(String useSiteCode);
/**
* 检查是否重复
*
* @param emisCustomerAddress
* @return 数量
*/
public int checkUnique(EmisCustomerAddress emisCustomerAddress);
}

View File

@ -76,4 +76,9 @@ public interface EmisCustomerUserMapper extends BaseMapper<EmisCustomerUser>
*/
public Long selectMaxCustomerCodeBySite(String ownSiteCode);
public EmisCustomerUser selectEmisCustomerUserByPhone(String phone);
}

View File

@ -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<EmisCustomerUser> 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<EmisCustomerAddress> 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;
}
/**

View File

@ -75,4 +75,13 @@ public interface IEmisCustomerAddressService
*/
public int setDefaultAddressById(Long id,String defaultFlag);
/**
* 检查是否重复
*
* @param emisCustomerAddress
* @return 数量
*/
public int checkUnique(EmisCustomerAddress emisCustomerAddress);
}

View File

@ -151,4 +151,17 @@ public class EmisCustomerAddressServiceImpl extends EmisBaseService implements I
}
/**
* 检查是否重复
*
* @param emisCustomerAddress
* @return 数量
*/
@Override
public int checkUnique(EmisCustomerAddress emisCustomerAddress)
{
return emisCustomerAddressMapper.checkUnique(emisCustomerAddress);
}
}

View File

@ -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<emisWaybillSave.getParcelQty().intValue();i++){
for(int i=0;i<emisWaybillSave.getParcelQty().intValue() && i<50;i++){
sb.append(emisWaybillSave.getBillCode()+ StringUtils.leftPad(String.valueOf(i),4,"0")+",");
}
emisWaybillSave.setBillCodeSub(sb.toString());
}
// 物品名称
if(StringUtils.isEmpty(emisWaybillSave.getGoodsInfo())){
if(!CollectionUtils.isEmpty(emisWaybillSave.getCargoList()) ){
StringBuilder sb = new StringBuilder();
for(EmisWaybillCargo cargo:emisWaybillSave.getCargoList()){
sb.append(cargo.getGoodsName()+",");
}
emisWaybillSave.setGoodsInfo(sb.toString());
}
}
emisWaybillSave.preInsert();
emisWaybillMapper.insertEmisWaybill(emisWaybillSave);
// 产生主键插入其他数据

View File

@ -225,4 +225,25 @@
update emis_customer_address set bl_site_default_flag = '0' where customer_code = #{customerCode}
</update>
<select id="checkUnique" parameterType="EmisCustomerAddress" resultType="int">
select count(1) from emis_customer_address
where del_flag='0'
and customer_code = #{customerCode}
and country = #{country}
and `name` = #{name}
and phone = #{phone}
and province = #{province}
and city = #{city}
and county = #{county}
and town = #{town}
and address = #{address}
and post_code = #{postCode}
and email = #{email}
and company = #{company}
and address_type = #{addressType}
limit 1
</select>
</mapper>

View File

@ -370,4 +370,11 @@
select max(CONVERT(customer_code,SIGNED)) as code from emis_customer_user where owner_site = #{ownSiteCode}
</select>
<select id="selectEmisCustomerUserByPhone" parameterType="string" resultMap="EmisCustomerUserResult">
select id, customer_code, customer_name, customer_name_en, simple_name, contact, phone, mobile, customer_type, settled_type, user_type, company, lic_no, dept_id, avatar, sex, invitation_info, login_ip, login_date, nick_name, union_id, openid, monthly_pay_code, user_name, password, owner_site, biz_site, biz_site_name, country, province, city, county, town, address, email, post_code, real_name, id_no, payee, salesmen, data_from, bl_open_oms, bl_sms, op_emp_code, first_signing_day, status, order_num, remark, del_flag, create_by, create_time, update_by, update_time, create_site, update_site
from emis_customer_user a
where a.phone = #{phone}
</select>
</mapper>