diff --git a/src/main/java/com/gaotao/modules/base/entity/CustomerLabelSettingData.java b/src/main/java/com/gaotao/modules/base/entity/CustomerLabelSettingData.java index d4ac54bc..1d444f95 100644 --- a/src/main/java/com/gaotao/modules/base/entity/CustomerLabelSettingData.java +++ b/src/main/java/com/gaotao/modules/base/entity/CustomerLabelSettingData.java @@ -18,6 +18,9 @@ public class CustomerLabelSettingData { private String parentLabelNo;//父级标签编码 private String searchFlag;//是否查询 private String checkFlag;//是否检查 + private String originalLabelNo;//修改前的标签编号,用于定位原记录 + private String originalLabelType;//修改前的标签类型,用于定位原记录 + private String originalAddressNo;//修改前的地址编码,用于定位原记录 public CustomerLabelSettingData() { @@ -134,4 +137,28 @@ public class CustomerLabelSettingData { public void setCheckFlag(String checkFlag) { this.checkFlag = checkFlag; } + + public String getOriginalLabelNo() { + return originalLabelNo; + } + + public void setOriginalLabelNo(String originalLabelNo) { + this.originalLabelNo = originalLabelNo; + } + + public String getOriginalLabelType() { + return originalLabelType; + } + + public void setOriginalLabelType(String originalLabelType) { + this.originalLabelType = originalLabelType; + } + + public String getOriginalAddressNo() { + return originalAddressNo; + } + + public void setOriginalAddressNo(String originalAddressNo) { + this.originalAddressNo = originalAddressNo; + } } diff --git a/src/main/java/com/gaotao/modules/base/service/Impl/BaseServiceImpl.java b/src/main/java/com/gaotao/modules/base/service/Impl/BaseServiceImpl.java index 0e147653..882e83ef 100644 --- a/src/main/java/com/gaotao/modules/base/service/Impl/BaseServiceImpl.java +++ b/src/main/java/com/gaotao/modules/base/service/Impl/BaseServiceImpl.java @@ -225,8 +225,23 @@ public class BaseServiceImpl implements BaseService { public void updateCustomerLabelSetting(CustomerLabelSettingData inData) { // 统一规范输入数据 normalizeCustomerLabelSettingData(inData); - // 业务校验 + // 业务校验(会按标签主数据回填标签类型) validateCustomerLabelSettingData(inData); + // 未传原标签时按当前值定位,兼容只改备注的旧请求 + if (isBlank(inData.getOriginalLabelNo())) { + inData.setOriginalLabelNo(inData.getLabelNo()); + } + if (isBlank(inData.getOriginalLabelType())) { + inData.setOriginalLabelType(inData.getLabelType()); + } + // 编号、类型或地址变了,新键可能撞上另一条配置;原记录不在这个新键上,不能靠更新行数判断重复 + boolean labelChanged = !inData.getLabelNo().equalsIgnoreCase(inData.getOriginalLabelNo()) + || !inData.getLabelType().equals(inData.getOriginalLabelType()); + boolean addressChanged = inData.getOriginalAddressNo() != null + && !inData.getAddressNo().equalsIgnoreCase(inData.getOriginalAddressNo()); + if ((labelChanged || addressChanged) && baseMapper.countCustomerLabelSetting(inData) > 0) { + throw new XJException(labelSettingI18n.text("label.error.customerExists")); + } // 执行更新并校验是否更新成功 int effectRows = baseMapper.updateCustomerLabelSetting(inData); if (effectRows <= 0) { @@ -319,6 +334,12 @@ public class BaseServiceImpl implements BaseService { inData.setSubLabelFlag(subLabelFlag); String parentLabelNo = trimUpper(inData.getParentLabelNo()); inData.setParentLabelNo("Y".equals(subLabelFlag) ? parentLabelNo : "*"); + // 原编号、原类型允许为空,更新时再回退到当前值;原地址要区分“未传”和“原来就是空” + inData.setOriginalLabelNo(trimUpper(inData.getOriginalLabelNo())); + inData.setOriginalLabelType(trimToEmpty(inData.getOriginalLabelType())); + if (inData.getOriginalAddressNo() != null) { + inData.setOriginalAddressNo(trimUpper(inData.getOriginalAddressNo())); + } } /** diff --git a/src/main/resources/mapper/base/BaseMapper.xml b/src/main/resources/mapper/base/BaseMapper.xml index 8de8e8a5..6f6c31d4 100644 --- a/src/main/resources/mapper/base/BaseMapper.xml +++ b/src/main/resources/mapper/base/BaseMapper.xml @@ -208,16 +208,25 @@ VALUES (#{site}, #{customerId}, #{addressNo}, '*', #{labelType}, #{labelNo}, #{remark}, #{subLabelFlag}, #{parentLabelNo}) - + - UPDATE ReportFileDefCustomer SET AddressNo = #{addressNo}, SubReportFlag = #{subLabelFlag}, ParentReportID = #{parentLabelNo}, Remark = #{remark} + UPDATE ReportFileDefCustomer + SET AddressNo = #{addressNo}, + ReportID = #{labelNo}, + ReportFamily = #{labelType}, + SubReportFlag = #{subLabelFlag}, + ParentReportID = #{parentLabelNo}, + Remark = #{remark} AND Site = #{site} - AND ReportID = #{labelNo} + AND ReportID = #{originalLabelNo} AND CustomerID = #{customerId} AND FamilyID = '*' - - AND ReportFamily = #{labelType} + + AND ReportFamily = #{originalLabelType} + + + AND ISNULL(AddressNo, '') = #{originalAddressNo}