diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/PmsProductModule.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/PmsProductModule.java index c80ac725a..705a77efe 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/PmsProductModule.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/PmsProductModule.java @@ -83,6 +83,9 @@ public class PmsProductModule extends BaseEntity @ApiModelProperty(value = "关联项目ID") @JsonInclude(JsonInclude.Include.NON_EMPTY) private Long pmsProjectId; + + @ApiModelProperty(value = "是否为固定模块") + private Boolean isFixedModule; /** * 子模块 */ diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductModuleDataVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductModuleDataVo.java index 85cd8cb0f..5db334057 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductModuleDataVo.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/PmsProductModuleDataVo.java @@ -31,4 +31,7 @@ public class PmsProductModuleDataVo /** 关联产品ID */ @ApiModelProperty(value = "关联产品ID") private String pmsProductIdentifier; + + @ApiModelProperty(value = "是否为固定模块") + private Boolean isFixedModule; } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/TreeSelect.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/TreeSelect.java index 8e62c804b..2af1838db 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/TreeSelect.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/TreeSelect.java @@ -32,6 +32,11 @@ public class TreeSelect implements Serializable { /** 层级 */ private Integer level; + /** + * 层级 + */ + private Boolean isFixedModule = true; + /** 子节点 */ @JsonInclude(JsonInclude.Include.NON_EMPTY) private List children; @@ -51,5 +56,9 @@ public class TreeSelect implements Serializable { this.children = pmsProductModule.getChildren().stream().map(x->new TreeSelect(x,this.level+1)).collect(Collectors.toList()); this.isLeaf= this.children.isEmpty(); + if (pmsProductModule.getIsFixedModule() != null) { + this.isFixedModule = pmsProductModule.getIsFixedModule(); + } + } } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/IPmsProductModuleService.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/IPmsProductModuleService.java index ba3f2d8d6..033baaaea 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/IPmsProductModuleService.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/IPmsProductModuleService.java @@ -84,8 +84,10 @@ public interface IPmsProductModuleService /** * 同步产品模块到测试用例模块 * - * @param testcaseId 测试用例ID + * @param projectId 测试用例ID * @return 是否成功 */ boolean syncByProductModule(Long projectId); + + int initProductModule(String productIdentifier); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductModuleServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductModuleServiceImpl.java index 7d1e1df11..215f0b336 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductModuleServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductModuleServiceImpl.java @@ -27,7 +27,10 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.*; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -129,14 +132,16 @@ public class PmsProductModuleServiceImpl implements IPmsProductModuleService } checkParentModule(pmsProductModule, name); checkNameDuplicates(pmsProductModule); - String currentUsername = SecurityUtils.getUsername(); - Date now = DateUtils.getNowDate(); - pmsProductModule.setCreateBy(currentUsername); - pmsProductModule.setCreateTime(now); - pmsProductModuleMapper.insertPmsProductModule(pmsProductModule); + insertModuleDatabase(pmsProductModule); return pmsProductModule.getId(); } + private int insertModuleDatabase(PmsProductModule pmsProductModule) { + pmsProductModule.setCreateBy(SecurityUtils.getUsername()); + pmsProductModule.setCreateTime(DateUtils.getNowDate()); + return pmsProductModuleMapper.insertPmsProductModule(pmsProductModule); + } + /** * 校验父模块是否正确 */ @@ -168,6 +173,9 @@ public class PmsProductModuleServiceImpl implements IPmsProductModuleService throw new ServiceException("[%s]不允许进行操作", NO_MODULE); } PmsProductModule oldPmsProductModule = selectPmsProductModuleById(pmsProductModule.getId(), true); + if (oldPmsProductModule.getIsFixedModule()) { + throw new ServiceException("固定模块不允许进行操作"); + } String name; // 当type为1时则取产品需求数量、为2时取测试用例数量 if (PmsConstants.PRODUCT_TAG_AND_MODULE_TYPE.equals(oldPmsProductModule.getType())) { @@ -216,7 +224,9 @@ public class PmsProductModuleServiceImpl implements IPmsProductModuleService public int deletePmsProductModuleById(Long id) { PmsProductModule oldPmsProductModule = selectPmsProductModuleById(id, true); - + if (oldPmsProductModule.getIsFixedModule()) { + throw new ServiceException("固定模块不允许进行操作"); + } PmsProductModule pmsProductModuleSearch=new PmsProductModule(); pmsProductModuleSearch.setParentId(id); List pmsProductModuleChildList=pmsProductModuleMapper.selectPmsProductModuleList(pmsProductModuleSearch); @@ -314,6 +324,7 @@ public class PmsProductModuleServiceImpl implements IPmsProductModuleService allPmsProductModule.setId(0L); allPmsProductModule.setModuleName(ALL_MODULE); allPmsProductModule.setNodeDataCount(allNodeDataCount); + allPmsProductModule.setIsFixedModule(pmsProductModule.getIsFixedModule()); moduleList.add(allPmsProductModule); // 构建无所属模块 PmsProductModule noPmsProductModule = new PmsProductModule(); @@ -383,6 +394,45 @@ public class PmsProductModuleServiceImpl implements IPmsProductModuleService return true; } + @Override + public int initProductModule(String productIdentifier) { + PmsProduct pmsProduct = pmsProductService.selectPmsProductByIdentifier(productIdentifier); + PmsProductModule pmsProductModule = new PmsProductModule(); + pmsProductModule.setPmsProductIdentifier(pmsProduct.getProductIdentifier()); + pmsProductModule.setIsFixedModule(true); + pmsProductModule.setType(PmsConstants.PRODUCT_TAG_AND_MODULE_TYPE); + + int success = 0; + + pmsProductModule.setModuleName("质量需求"); + success += insertModuleDatabase(pmsProductModule); + pmsProductModule.setParentId(pmsProductModule.getId()); + pmsProductModule.setModuleName("适应性"); + success += insertModuleDatabase(pmsProductModule); + pmsProductModule.setModuleName("保密性"); + success += insertModuleDatabase(pmsProductModule); + pmsProductModule.setModuleName("安全性"); + success += insertModuleDatabase(pmsProductModule); + pmsProductModule.setModuleName("环境适应性"); + success += insertModuleDatabase(pmsProductModule); + pmsProductModule.setModuleName("可靠性"); + success += insertModuleDatabase(pmsProductModule); + pmsProductModule.setModuleName("可维护性"); + success += insertModuleDatabase(pmsProductModule); + pmsProductModule.setModuleName("可测试性"); + success += insertModuleDatabase(pmsProductModule); + + pmsProductModule.setParentId(null); + pmsProductModule.setModuleName("计算机资源需求"); + success += insertModuleDatabase(pmsProductModule); + pmsProductModule.setParentId(pmsProductModule.getId()); + pmsProductModule.setModuleName("硬件资源需求"); + success += insertModuleDatabase(pmsProductModule); + pmsProductModule.setModuleName("软件资源需求"); + success += insertModuleDatabase(pmsProductModule); + return success; + } + /** * 通过递归复制树 * diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductServiceImpl.java index 867554cd8..27db70ac1 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductServiceImpl.java @@ -135,6 +135,9 @@ public class PmsProductServiceImpl implements IPmsProductService pmsProduct.setDeptId(pmsEnterprise.getDeptId()); pmsProductMapper.insertPmsProduct(pmsProduct); + + // 新建产品时初始化固定模块 + pmsProductModuleService.initProductModule(pmsProduct.getProductIdentifier()); return pmsProduct.getProductIdentifier(); } diff --git a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductModuleMapper.xml b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductModuleMapper.xml index 2cc19f1c9..30cec42a6 100644 --- a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductModuleMapper.xml +++ b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductModuleMapper.xml @@ -18,6 +18,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -32,7 +33,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" create_by, del_flag, type, - pms_project_id + pms_project_id, + is_fixed_module from pms_product_module @@ -49,6 +51,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" , m.del_flag , m.type , m.pms_project_id + , m.is_fixed_module ,( SELECT COUNT(*) FROM pms_product_requirement r @@ -203,6 +206,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" del_flag, type, pms_project_id, + is_fixed_module, #{moduleName}, @@ -216,6 +220,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{delFlag}, #{type}, #{pmsProjectId}, + #{isFixedModule}, @@ -233,6 +238,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" del_flag = #{delFlag}, type = #{type}, pms_project_id = #{pmsProjectId}, + is_fixed_module = #{isFixedModule}, where id = #{id}