From 5415a861612624ae64732c91ab7323e99ec9a43c Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Mon, 25 Aug 2025 15:22:06 +0800 Subject: [PATCH] =?UTF-8?q?demand:=20tms/app=E8=BF=90=E5=8D=95=E5=BD=95?= =?UTF-8?q?=E5=85=A5=E3=80=81=E8=BF=90=E5=8D=95=E4=BF=AE=E6=94=B9=E3=80=81?= =?UTF-8?q?=E8=BF=90=E5=8D=95=E6=89=B9=E9=87=8F=E5=BD=95=E5=85=A5=E3=80=81?= =?UTF-8?q?=E7=BD=91=E7=82=B9=E8=B4=B9=E7=94=A8=E7=94=B3=E8=AF=B7=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=BD=95=E5=85=A5=E4=BC=81=E4=B8=9A=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E3=80=81=E4=BC=81=E4=B8=9A=E7=A8=8E=E5=8F=B7=E7=9A=84=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=20=20tms/app=E8=BF=90=E5=8D=95=E5=BD=95=E5=85=A5?= =?UTF-8?q?=E3=80=81=E8=BF=90=E5=8D=95=E4=BF=AE=E6=94=B9=E3=80=81=E8=BF=90?= =?UTF-8?q?=E5=8D=95=E6=89=B9=E9=87=8F=E5=BD=95=E5=85=A5=E3=80=81=E7=BD=91?= =?UTF-8?q?=E7=82=B9=E8=B4=B9=E7=94=A8=E7=94=B3=E8=AF=B7=E5=BD=95=E5=85=A5?= =?UTF-8?q?=E4=BC=81=E4=B8=9A=E5=90=8D=E7=A7=B0=E3=80=81=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E7=A8=8E=E5=8F=B7=E5=90=8E=E8=87=AA=E5=8A=A8=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=9B=B4=E6=96=B0/=E6=96=B0=E5=A2=9E=E5=88=B0=E5=AF=84?= =?UTF-8?q?=E4=BB=B6=E4=BA=BA=E4=BF=A1=E6=81=AF=20=20=20tms-=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AE=A1=E7=90=86-=E5=AF=84=E4=BB=B6=E4=BA=BA?= =?UTF-8?q?=E5=9C=B0=E5=9D=80-=E5=A2=9E=E5=8A=A0=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E4=BC=81=E4=B8=9A=E5=90=8D=E7=A7=B0=E3=80=81=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E7=A8=8E=E5=8F=B7=E6=A8=A1=E7=B3=8A=E6=9F=A5=E8=AF=A2=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=9F=A5=E8=AF=A2=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BC=81=E4=B8=9A=E5=90=8D=E7=A7=B0=E3=80=81?= =?UTF-8?q?=E4=BC=81=E4=B8=9A=E7=A8=8E=E5=8F=B7=EF=BC=8C=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0=E6=B7=BB=E5=8A=A0=E4=BC=81?= =?UTF-8?q?=E4=B8=9A=E5=90=8D=E7=A7=B0=E3=80=81=E4=BC=81=E4=B8=9A=E7=A8=8E?= =?UTF-8?q?=E5=8F=B7=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit committer: heyu --- .../erp/emis/domain/EmisCustomerAddress.java | 5 + .../xdadan/erp/emis/domain/EmisWaybill.java | 4 + .../com/xdadan/erp/emis/domain/vo/Sender.java | 4 + .../erp/emis/domain/vo/WaybillOrder.java | 2 + .../mapper/EmisCustomerAddressMapper.java | 34 ++++--- .../erp/emis/service/EmisBaseService.java | 95 +++++++++++++++++++ .../service/impl/EmisWaybillServiceImpl.java | 4 +- .../mapper/EmisCustomerAddressMapper.xml | 53 ++++++++++- 8 files changed, 183 insertions(+), 18 deletions(-) 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 + + + +