forked from Gitlink/microservices
fix(Bug修复): 修复产品标识由用户自定义后可能在不同组织下存在相同产品标识的问题
1. 新增字段:自定义标识,用户输入的自定义标识填充到该字段中,原产品标识还是自动生成 2. 需求规格标识根据自定义标识来生成 Signed-off-by: OTTO <731554297@qq.com>
This commit is contained in:
parent
24c1bfedba
commit
33ffe1bfb4
|
|
@ -66,16 +66,13 @@ public class PmsProduct extends BaseEntity
|
|||
/** 删除标志(0代表存在 2代表删除) */
|
||||
private String delFlag;
|
||||
|
||||
/** 预留字段1 */
|
||||
@ApiModelProperty(value = "自定义标识")
|
||||
private String customIdentifier;
|
||||
|
||||
@ApiModelProperty(value = "预留字段1")
|
||||
@JsonInclude(JsonInclude.Include.NON_EMPTY)
|
||||
private String reservedField1;
|
||||
|
||||
/** 预留字段2 */
|
||||
@ApiModelProperty(value = "预留字段2")
|
||||
@JsonInclude(JsonInclude.Include.NON_EMPTY)
|
||||
private String reservedField2;
|
||||
|
||||
|
||||
public PmsProductDataVo toPmsProductDataVo() {
|
||||
PmsProductDataVo target = new PmsProductDataVo();
|
||||
|
|
|
|||
|
|
@ -42,10 +42,10 @@ public class PmsProductInputVo
|
|||
@ApiModelProperty(value = "关联企业标识", hidden = true)
|
||||
private String pmsEnterpriseIdentifier;
|
||||
|
||||
@ApiModelProperty(value = "产品标识", required = true)
|
||||
@ApiModelProperty(value = "产品自定义标识", required = true)
|
||||
@NotNull
|
||||
@Size(max = 50, message = "长度需要小于50")
|
||||
private String productIdentifier;
|
||||
private String customIdentifier;
|
||||
|
||||
public PmsProduct toPmsProduct(String pmsEnterpriseIdentifier) {
|
||||
PmsProduct target = new PmsProduct();
|
||||
|
|
|
|||
|
|
@ -91,4 +91,6 @@ public interface PmsProductMapper
|
|||
Integer selectPmsProductCount(PmsProductSearchVo pmsProductSearchVo);
|
||||
|
||||
Integer selectPmsProductByIdentifierCount(@Param("identifier") String identifier, @Param("pmsEnterpriseIdentifier") String pmsEnterpriseIdentifier);
|
||||
|
||||
Integer selectPmsProductByCustomIdentifierCount(@Param("customIdentifier") String customIdentifier, @Param("enterpriseIdentifier") String enterpriseIdentifier);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -372,7 +372,8 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
|
|||
private void userReqToReqSpecs(PmsProductRequirement userReq, PmsProductReqOperationRecord record) {
|
||||
PmsProductRequirement reqSpecs =
|
||||
userReq.userReqToReqSpecs();
|
||||
reqSpecs.setIdentifier(genReqSpecsIdentifier(userReq.getPmsProductIdentifier(), userReq.getTitle(), null));
|
||||
PmsProduct pmsProduct = pmsProductService.selectPmsProductByIdentifier(userReq.getPmsProductIdentifier());
|
||||
reqSpecs.setIdentifier(genReqSpecsIdentifier(pmsProduct.getCustomIdentifier(), userReq.getTitle(), null));
|
||||
reqSpecs.setCreateAndUpdate(SecurityUtils.getUsername());
|
||||
pmsProductRequirementMapper.insertPmsProductRequirement(reqSpecs);
|
||||
record.setProductRequirementId(reqSpecs.getId());
|
||||
|
|
@ -434,17 +435,17 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
|
|||
return toProductReqSpecsDetailVo(pmsProductRequirement);
|
||||
}
|
||||
|
||||
private String genReqSpecsIdentifier(String productIdentifier, String reqTitle, String oldIdentifier) {
|
||||
private String genReqSpecsIdentifier(String customIdentifier, String reqTitle, String oldIdentifier) {
|
||||
// 去掉标题中特殊字符
|
||||
String regEx = "\\pP|\\pS|\\s+";
|
||||
reqTitle = Pattern.compile(regEx).matcher(reqTitle).replaceAll("").trim();
|
||||
String reqTitleIdentifier = PinYinStringUtils.toFirstChar(reqTitle).toUpperCase();
|
||||
String identifier = productIdentifier + "-" + reqTitleIdentifier;
|
||||
String identifier = customIdentifier + "-" + reqTitleIdentifier;
|
||||
if (!identifier.equals(oldIdentifier)) {
|
||||
Integer count = pmsProductRequirementMapper.selectReqSpecsCountByIdentifier(identifier);
|
||||
int nameCount = 1;
|
||||
while (count > 0) {
|
||||
identifier = productIdentifier + "-" + reqTitleIdentifier + "-" + nameCount;
|
||||
identifier = customIdentifier + "-" + reqTitleIdentifier + "-" + nameCount;
|
||||
count = pmsProductRequirementMapper.selectReqSpecsCountByIdentifier(identifier);
|
||||
nameCount++;
|
||||
}
|
||||
|
|
@ -464,7 +465,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
|
|||
checkReqSpecsParameter(pmsProductRequirement, pmsProduct, null);
|
||||
|
||||
// 生成需求唯一标识
|
||||
pmsProductRequirement.setIdentifier(genReqSpecsIdentifier(pmsProduct.getProductIdentifier(), productReqSpecsInputVo.getTitle(), null));
|
||||
pmsProductRequirement.setIdentifier(genReqSpecsIdentifier(pmsProduct.getCustomIdentifier(), productReqSpecsInputVo.getTitle(), null));
|
||||
// 设置默认需求状态
|
||||
pmsProductRequirement.setStatus(ProductReqStatus.PENDING_REVIEW_REQ_SPECS.getKey());
|
||||
|
||||
|
|
|
|||
|
|
@ -116,10 +116,11 @@ public class PmsProductServiceImpl implements IPmsProductService
|
|||
@Override
|
||||
public String insertPmsProduct(PmsProduct pmsProduct) {
|
||||
PmsEnterprise pmsEnterprise = pmsEnterpriseService.selectPmsEnterpriseByIdentifier(pmsProduct.getPmsEnterpriseIdentifier());
|
||||
pmsProduct.setProductIdentifier(genProductIdentifier());
|
||||
checkNameDuplicates(pmsProduct.getProductName(), pmsProduct.getPmsEnterpriseIdentifier());
|
||||
Integer count = pmsProductMapper.selectPmsProductByIdentifierCount(pmsProduct.getProductIdentifier(), pmsEnterprise.getEnterpriseIdentifier());
|
||||
Integer count = pmsProductMapper.selectPmsProductByCustomIdentifierCount(pmsProduct.getCustomIdentifier(), pmsEnterprise.getEnterpriseIdentifier());
|
||||
if (count > 0) {
|
||||
throw new ServiceException("该产品标识在当前企业下已存在(产品标识[%s])", pmsProduct.getProductIdentifier());
|
||||
throw new ServiceException("该产品自定义标识在当前企业下已存在(产品自定义标识[%s])", pmsProduct.getCustomIdentifier());
|
||||
}
|
||||
pmsProduct.setPmsEnterpriseId(pmsEnterprise.getId());
|
||||
String currentUsername=SecurityUtils.getUsername();
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="createBy" column="create_by" />
|
||||
<result property="delFlag" column="del_flag" />
|
||||
<result property="reservedField1" column="reserved_field_1" />
|
||||
<result property="reservedField2" column="reserved_field_2" />
|
||||
<result property="customIdentifier" column="custom_identifier"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectPmsProductVo">
|
||||
|
|
@ -39,7 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
create_by,
|
||||
del_flag,
|
||||
reserved_field_1,
|
||||
reserved_field_2
|
||||
custom_identifier
|
||||
from pms_product
|
||||
</sql>
|
||||
|
||||
|
|
@ -59,7 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
ppd.create_by,
|
||||
ppd.del_flag,
|
||||
ppd.reserved_field_1,
|
||||
ppd.reserved_field_2
|
||||
ppd.custom_identifier
|
||||
from pms_product ppd
|
||||
left join pms_enterprise as pe on ppd.pms_enterprise_id = pe.id
|
||||
</sql>
|
||||
|
|
@ -116,6 +116,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
where ppd.product_identifier = #{identifier}
|
||||
and pe.enterprise_identifier = #{pmsEnterpriseIdentifier}
|
||||
</select>
|
||||
<select id="selectPmsProductByCustomIdentifierCount" resultType="java.lang.Integer">
|
||||
select count(0)
|
||||
from pms_product ppd
|
||||
left join pms_enterprise as pe on ppd.pms_enterprise_id = pe.id
|
||||
where ppd.custom_identifier = #{customIdentifier}
|
||||
and pe.enterprise_identifier = #{enterpriseIdentifier}
|
||||
</select>
|
||||
|
||||
<insert id="insertPmsProduct" parameterType="PmsProduct" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into pms_product
|
||||
|
|
@ -136,7 +143,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="createBy != null">create_by,</if>
|
||||
<if test="delFlag != null">del_flag,</if>
|
||||
<if test="reservedField1 != null">reserved_field_1,</if>
|
||||
<if test="reservedField2 != null">reserved_field_2,</if>
|
||||
<if test="customIdentifier != null">custom_identifier,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="productName != null and productName != ''">#{productName},</if>
|
||||
|
|
@ -155,7 +162,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="createBy != null">#{createBy},</if>
|
||||
<if test="delFlag != null">#{delFlag},</if>
|
||||
<if test="reservedField1 != null">#{reservedField1},</if>
|
||||
<if test="reservedField2 != null">#{reservedField2},</if>
|
||||
<if test="customIdentifier != null">#{customIdentifier},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
|
|
@ -178,7 +185,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="createBy != null">create_by = #{createBy},</if>
|
||||
<if test="delFlag != null">del_flag = #{delFlag},</if>
|
||||
<if test="reservedField1 != null">reserved_field_1 = #{reservedField1},</if>
|
||||
<if test="reservedField2 != null">reserved_field_2 = #{reservedField2},</if>
|
||||
<if test="customIdentifier != null">custom_identifier = #{customIdentifier},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
|
|
|||
Loading…
Reference in New Issue