diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisCustomerAddress.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisCustomerAddress.java index 08fca3ce8..b6c3eeb35 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisCustomerAddress.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisCustomerAddress.java @@ -83,4 +83,9 @@ public class EmisCustomerAddress extends BaseEntity /* 使用站点名称 */ private String useSiteName; + /* 企业名称 */ + private String enterpriseName; + /* 企业税号 */ + private String enterpriseTaxId; + } 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 8742ac8c2..86ad03f09 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 @@ -156,6 +156,10 @@ public class EmisWaybill extends BaseEntity private String sendPostcode; /* 发件人省市区名称,逗号分隔 */ private String sendPcd; + /* 企业名称 */ + private String enterpriseName; + /* 企业税号 */ + private String enterpriseTaxId; /* 支付方式 : 现金或月结 */ @TableField @DataAuditField(fieldComment = "支付方式",dictType="emis_payment_type") diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/Sender.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/Sender.java index fd9999534..16e26be9a 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/Sender.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/Sender.java @@ -41,4 +41,8 @@ public class Sender implements Serializable { private String email; /* 公司 */ private String company; + /* 企业名称 */ + private String enterpriseName; + /* 企业税号 */ + private String enterpriseTaxId; } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/WaybillOrder.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/WaybillOrder.java index f36fe3f16..4f716dd96 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/WaybillOrder.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/WaybillOrder.java @@ -785,6 +785,8 @@ public class WaybillOrder implements Serializable { dbWaybill.setSendAddress(sender.getAddress()); dbWaybill.setSendPostcode(sender.getPostCode()); dbWaybill.setSendCompany(sender.getCompany()); + dbWaybill.setEnterpriseName(sender.getEnterpriseName()); + dbWaybill.setEnterpriseTaxId(sender.getEnterpriseTaxId()); } dbWaybill.setPaymentType(this.getPaymentType()); 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 4fba65f87..a85a83bb7 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 @@ -1,10 +1,10 @@ -/** +/** * @Project: emis * @Title: EmisCustomerAddressMapper.java * @author linfso * @date 2024-03-01 04:47:51 * @Copyright: ShangHai Doitinfo 2022 All rights reserved. - * @version v1.0 + * @version v1.0 * @Description:

客户收寄件地址 Mapper 接口

* Warning : This file is generate by ai tools,don't edit!!! */ @@ -30,31 +30,31 @@ public interface EmisCustomerAddressMapper extends BaseMapper selectEmisCustomerAddressList(EmisCustomerAddress emisCustomerAddress); /** - * 新增 - * + * 新增 + * * @param emisCustomerAddress - * @return + * @return */ public int insertEmisCustomerAddress(EmisCustomerAddress emisCustomerAddress); /** * 修改 - * - * @param emisCustomerAddress - * @return + * + * @param emisCustomerAddress + * @return */ public int updateEmisCustomerAddress(EmisCustomerAddress emisCustomerAddress); @@ -62,7 +62,7 @@ public interface EmisCustomerAddressMapper extends BaseMapper checkAndQuery(EmisCustomerAddress emisCustomerAddress); + /** * 查询重复的地址,并且给客户打上标签 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 e82d5241a..6ede46819 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 @@ -3552,6 +3552,58 @@ public class EmisBaseService { } + /** + * 根据添加的地址增加客户 + * + * @param emisCustomerAddressNew + * @return + */ + public int createCustomerAddressNew(EmisCustomerAddress emisCustomerAddressNew) throws EmisBizError { + + if ("2".equals(emisCustomerAddressNew.getAddressType())) { + if ("0086".equals(emisCustomerAddressNew.getCounty())) { + if (StringUtil.isBlank(emisCustomerAddressNew.getEnterpriseTaxId()) || StringUtil.isBlank(emisCustomerAddressNew.getEnterpriseName())) { + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "企业名称/企业税号不能为空"); + } + // 验证企业名称格式 + if (!validateEnterpriseName(emisCustomerAddressNew.getEnterpriseName())) { + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR, "企业名称不能包含空格、回车、@、#、$、%、&、数字等特殊符号"); + } + + // 验证企业税号格式 + if (!validateEnterpriseTaxId(emisCustomerAddressNew.getEnterpriseTaxId())) { + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR, "企业税号必须为8-18位数字和大写字母组成,不能包含汉字、空格等特殊符号"); + } + } else { + emisCustomerAddressNew.setEnterpriseName(null); + emisCustomerAddressNew.setEnterpriseTaxId(null); + } + } else { + emisCustomerAddressNew.setEnterpriseName(null); + emisCustomerAddressNew.setEnterpriseTaxId(null); + } + List emisCustomerAddressList = emisCustomerAddressMapper.checkAndQuery(emisCustomerAddressNew); + if (CollectionUtil.isEmpty(emisCustomerAddressList)) { + // 不重复的情况则 创建地址 + return emisCustomerAddressMapper.insertEmisCustomerAddress(emisCustomerAddressNew); + } else { + if ("2".equals(emisCustomerAddressNew.getAddressType()) && "0086".equals(emisCustomerAddressNew.getCounty())) { + List emisCustomerAddressIds = emisCustomerAddressList.stream().filter(i -> (StringUtil.isBlank(i.getEnterpriseTaxId()) || StringUtil.isBlank(i.getEnterpriseName()))).map(EmisCustomerAddress::getId).collect(Collectors.toList()); + if (CollectionUtil.isEmpty(emisCustomerAddressIds)) { + return 1; + } + for (Long id : emisCustomerAddressIds) { + EmisCustomerAddress emisCustomerAddress = new EmisCustomerAddress(); + emisCustomerAddress.setId(id); + emisCustomerAddress.setEnterpriseTaxId(emisCustomerAddressNew.getEnterpriseTaxId()); + emisCustomerAddress.setEnterpriseName(emisCustomerAddressNew.getEnterpriseName()); + emisCustomerAddressMapper.updateEmisCustomerAddress(emisCustomerAddress); + } + } + } + + return 1; + } /** * 根据添加的地址增加客户 @@ -3572,6 +3624,49 @@ public class EmisBaseService { return 1; } + /** + * 验证企业名称格式 + * 不允许包含空格、回车、@、#、$、%、&、数字等特殊符号 + */ + public boolean validateEnterpriseName(String enterpriseName) { + if (com.xdadan.erp.common.utils.StringUtils.isEmpty(enterpriseName)) { + return false; + } + + // 检查是否包含不允许的字符 + String invalidChars = " @#$%&0123456789"; + for (char c : invalidChars.toCharArray()) { + if (enterpriseName.contains(String.valueOf(c))) { + return false; + } + } + + // 检查是否包含回车符 + if (enterpriseName.contains("\n") || enterpriseName.contains("\r")) { + return false; + } + + return true; + } + + /** + * 验证企业税号格式 + * 8-18位数组成,由数字和大写字母组成,不允许有汉字、空格等特殊符号 + */ + public boolean validateEnterpriseTaxId(String enterpriseTaxId) { + if (com.xdadan.erp.common.utils.StringUtils.isEmpty(enterpriseTaxId)) { + return false; + } + + // 检查长度 + if (enterpriseTaxId.length() < 8 || enterpriseTaxId.length() > 18) { + return false; + } + + // 检查是否只包含数字和大写字母 + return enterpriseTaxId.matches("^[0-9A-Z]+$"); + } + /** * 获取线路 * @param code 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 7f9ddcd8e..3b6234eb1 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 @@ -2510,6 +2510,8 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb sendAddress.setUseSiteCode(emisWaybillSave.getSendSiteCode()); sendAddress.setAddressType("1"); + sendAddress.setEnterpriseName(emisWaybillSave.getEnterpriseName()); + sendAddress.setEnterpriseTaxId(emisWaybillSave.getEnterpriseTaxId()); // 收件地址 EmisCustomerAddress recieveAddress = new EmisCustomerAddress(); @@ -2626,7 +2628,7 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb } // 保存客户收件、寄件地址,开单不要关联客户地址数据 - createCustomerAddress(sendAddress); + createCustomerAddressNew(sendAddress); createCustomerAddress(recieveAddress); emisWaybillSave.setCustomerCode(customerCode); diff --git a/emis-biz/src/main/resources/mapper/EmisCustomerAddressMapper.xml b/emis-biz/src/main/resources/mapper/EmisCustomerAddressMapper.xml index 749f7dbf2..4439efaa1 100644 --- a/emis-biz/src/main/resources/mapper/EmisCustomerAddressMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisCustomerAddressMapper.xml @@ -27,6 +27,8 @@ + + @@ -38,7 +40,7 @@ - select id, user_id, customer_code, short_name, alias, address_type, country, name, phone, province, city, county, town, address, post_code, email, company, bl_default_flag, order_num, bl_site_default_flag, use_site, use_site_code, del_flag, create_by, create_time, update_by, update_time, remark, create_site, update_site from emis_customer_address + select id, user_id, customer_code, short_name, alias, address_type, country, name, phone, province, city, county, town, address, post_code, email, company, bl_default_flag, order_num, bl_site_default_flag, use_site, use_site_code, enterprise_name, enterprise_tax_id, del_flag, create_by, create_time, update_by, update_time, remark, create_site, update_site from emis_customer_address @@ -63,6 +65,8 @@ and post_code like concat('%', #{postCode}, '%') and email like concat('%', #{email}, '%') and company like concat('%', #{company}, '%') + and enterprise_name like concat('%', #{enterpriseName}, '%') + and enterprise_tax_id like concat('%', #{enterpriseTaxId}, '%') and bl_default_flag = #{blDefaultFlag} and order_num like concat('%', #{orderNum}, '%') and bl_site_default_flag like concat('%', #{blSiteDefaultFlag}, '%') @@ -79,7 +83,7 @@ and FIND_IN_SET(use_site_code, #{useSiteCode}) - and ( name like concat('%',#{searchValue}, '%') or phone like concat('%',#{searchValue}, '%') or company like concat('%',#{searchValue}, '%') ) + and ( name like concat('%',#{searchValue}, '%') or phone like concat('%',#{searchValue}, '%') or company like concat('%',#{searchValue}, '%') or enterprise_name like concat('%',#{searchValue}, '%') or enterprise_tax_id like concat('%',#{searchValue}, '%') ) @@ -87,7 +91,7 @@ @@ -116,6 +120,8 @@ bl_site_default_flag, use_site, use_site_code, + enterprise_name, + enterprise_tax_id, del_flag, create_by, create_time, @@ -147,6 +153,8 @@ #{blSiteDefaultFlag}, #{useSite}, #{useSiteCode}, + #{enterpriseName}, + #{enterpriseTaxId}, #{delFlag}, #{createBy}, #{createTime}, @@ -179,6 +187,8 @@ bl_default_flag = #{blDefaultFlag}, order_num = #{orderNum}, bl_site_default_flag = #{blSiteDefaultFlag}, + enterprise_name = #{enterpriseName}, + enterprise_tax_id = #{enterpriseTaxId}, use_site = #{useSite}, use_site_code = #{useSiteCode}, del_flag = #{delFlag}, @@ -237,6 +247,12 @@ and company = #{company} and company is null + and enterprise_name = #{enterpriseName} + and enterprise_name is null + + and enterprise_tax_id = #{enterpriseTaxId} + and enterprise_tax_id is null + and address_type = #{addressType} and customer_code is null @@ -266,5 +282,34 @@ limit 1 + + + +