From b987518adda8dcc4125a2943caf3785cc754f287 Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Fri, 29 Nov 2024 09:59:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E9=A1=B9=E7=9B=AE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E9=9C=80=E6=B1=82=E9=87=8D=E6=9E=84):=20?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=A7=E5=93=81=E4=B8=AD=E7=9A=84=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E9=9C=80=E6=B1=82=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 新增接口:查询用户需求列表 2. 新增产品需求状态枚举类(支持用户需求和需求规格) 3. 产品需求新增字段:需求来源用户、需求来源单位 Signed-off-by: OTTO <731554297@qq.com> --- .../PmsProductUserRequirementController.java | 49 ++++++++ .../product/domain/PmsProductRequirement.java | 13 +++ .../pms/product/domain/ProductReqStatus.java | 17 ++- .../domain/vo/ProductReqUserDetailVo.java | 30 +++++ .../domain/vo/ProductUserReqDataVo.java | 60 ++++++++++ .../domain/vo/ProductUserReqSearchVo.java | 38 ++++++ .../mapper/PmsProductRequirementMapper.java | 3 + .../IPmsProductRequirementService.java | 11 ++ .../PmsProductRequirementServiceImpl.java | 109 ++++++++++-------- .../pms/PmsProductRequirementMapper.xml | 26 +++++ 10 files changed, 303 insertions(+), 53 deletions(-) create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/PmsProductUserRequirementController.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqUserDetailVo.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductUserReqDataVo.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductUserReqSearchVo.java diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/PmsProductUserRequirementController.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/PmsProductUserRequirementController.java new file mode 100644 index 000000000..40990addd --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/PmsProductUserRequirementController.java @@ -0,0 +1,49 @@ +package com.microservices.pms.product.controller; + +import com.microservices.common.core.web.controller.BaseController; +import com.microservices.common.core.web.page.GenericsTableDataInfo; +import com.microservices.common.security.annotation.RequiresPermissions; +import com.microservices.pms.product.domain.vo.ProductUserReqDataVo; +import com.microservices.pms.product.domain.vo.ProductUserReqSearchVo; +import com.microservices.pms.product.service.IPmsProductModuleService; +import com.microservices.pms.product.service.IPmsProductRequirementService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 产品用户需求相关接口 + * + * @author otto + * @date 2023-10-10 + */ +@RestController +@Api(tags = "项目管理-用户需求相关接口") +@RequestMapping("/{enterpriseIdentifier}/pmsProductUserRequirement") +@ApiImplicitParams({ + @ApiImplicitParam(name = "enterpriseIdentifier", value = "企业标识", paramType = "path", dataType = "String") +}) +public class PmsProductUserRequirementController extends BaseController { + @Autowired + private IPmsProductRequirementService pmsProductRequirementService; + @Autowired + private IPmsProductModuleService pmsProductModuleService; + + /** + * 查询产品用户需求列表 + */ + @ApiOperation(value = "查询用户需求列表") + @RequiresPermissions("pms:pmsProduct:show") + @GetMapping("/list") + public GenericsTableDataInfo list(@PathVariable String enterpriseIdentifier, @Validated ProductUserReqSearchVo productUserReqSearchVo) { + startPage(); + return pmsProductRequirementService.selectUserReqList(enterpriseIdentifier, productUserReqSearchVo); + } +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/PmsProductRequirement.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/PmsProductRequirement.java index 8dcfcf043..a996859e7 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/PmsProductRequirement.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/PmsProductRequirement.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.microservices.common.core.utils.bean.BeanUtils; import com.microservices.common.core.web.domain.BaseEntity; import com.microservices.pms.product.domain.vo.PmsProductRequirementDataVo; +import com.microservices.pms.product.domain.vo.ProductUserReqDataVo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -137,6 +138,12 @@ public class PmsProductRequirement extends BaseEntity @ApiModelProperty(value = "产品需求类型") private String type; + @ApiModelProperty(value = "需求来源用户") + private String sourceUser; + + @ApiModelProperty(value = "需求来源单位") + private String sourceCompany; + @ApiModelProperty(value = "需求标识") private String identifier; @@ -145,4 +152,10 @@ public class PmsProductRequirement extends BaseEntity BeanUtils.copyProperties(this, target); return target; } + + public ProductUserReqDataVo toProductUserReqDataVo() { + ProductUserReqDataVo target = new ProductUserReqDataVo(); + BeanUtils.copyProperties(this, target); + return target; + } } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/ProductReqStatus.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/ProductReqStatus.java index 6be9fd8ff..f55816f5d 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/ProductReqStatus.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/ProductReqStatus.java @@ -4,17 +4,19 @@ import lombok.Getter; /** * 产品需求状态 + * @author OTTO */ @Getter public enum ProductReqStatus { USER_REQ("userReq", "待评审", "待评审的用户需求"), - REJECTED_USER_REQ("rejectedUserReq", "评审失败", "已拒绝的用户需求"), + REJECTED_USER_REQ("rejectedUserReq", "已拒绝", "已拒绝的用户需求"), + REVIEWED_USER_REQ("reviewedUserReq", "已评审", "已评审的用户需求"), PENDING_REVIEW_REQ_SPECS("pendingReviewReqSpecs", "待评审", "待评审的需求规格"), REVIEWED_REQ_SPECS_CHANGING("reviewedReqSpecsChanging", "已评审", "已评审的需求规格(变更中)"), PLANNED_REQ_SPECS("plannedReqSpecs", "计划中", "计划中的需求规格"), - PENDING_MODIFIED_REQ_SPECS("pendingModifiedReqSpecs", "待修正", "待修正的需求规格"), REJECTED_REQ_SPECS("rejectedReqSpecs", "已拒绝", "已拒绝的需求规格"), - REVIEWED_REQ_SPECS("reviewedReqSpecs", "已评审", "已评审的需求规格"); + REVIEWED_REQ_SPECS("reviewedReqSpecs", "已评审", "已评审的需求规格"), + COMPLETED_REQ_SPECS("completedReqSpecs", "已完成", "已完成的需求规格"); private final String key; private final String name; private final String remark; @@ -33,4 +35,13 @@ public enum ProductReqStatus { } return null; } + + public static String getNameByKey(String status) { + for (ProductReqStatus productReqStatus : ProductReqStatus.values()) { + if (productReqStatus.getKey().equals(status)) { + return productReqStatus.getName(); + } + } + return null; + } } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqUserDetailVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqUserDetailVo.java new file mode 100644 index 000000000..a6cfeaf35 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqUserDetailVo.java @@ -0,0 +1,30 @@ +package com.microservices.pms.product.domain.vo; + +import com.microservices.system.api.domain.SysFileInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 产品需求对象 pms_product_requirement + * + * @author otto + * @date 2023-10-10 + */ +@Data +@ApiModel("用户需求详细数据对象") +public class ProductReqUserDetailVo extends ProductUserReqDataVo { + /** + * 正文 + */ + @ApiModelProperty(value = "正文") + private String content; + + /** + * 附件列表 + */ + @ApiModelProperty(value = "附件列表") + private List fileList; +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductUserReqDataVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductUserReqDataVo.java new file mode 100644 index 000000000..ae5b5868b --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductUserReqDataVo.java @@ -0,0 +1,60 @@ +package com.microservices.pms.product.domain.vo; + +import com.microservices.common.core.utils.bean.BeanUtils; +import com.microservices.pms.product.domain.PmsProductModule; +import com.microservices.pms.project.domain.vo.BaseEntityVo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 产品需求对象 pms_product_requirement + * + * @author otto + * @date 2023-10-10 + */ +@Data +@ApiModel("用户需求数据对象") +public class ProductUserReqDataVo extends BaseEntityVo { + /** + * 需求标识 + */ + @ApiModelProperty(value = "需求标识") + private Long id; + + /** + * 索引 + */ + @ApiModelProperty(value = "索引") + private Long index; + + /** + * 标题 + */ + @ApiModelProperty(value = "标题") + private String title; + + /** + * 关联状态 + */ + @ApiModelProperty(value = "需求状态") + private String status; + + /** + * 关联产品模块 + */ + @ApiModelProperty(value = "从属产品模块") + private PmsProductModule pmsProductModule; + + @ApiModelProperty(value = "需求来源用户") + private String sourceUser; + + @ApiModelProperty(value = "需求来源单位") + private String sourceCompany; + + public PmsProductRequirementDetailVo toPmsProductRequirementDetailVo() { + PmsProductRequirementDetailVo target = new PmsProductRequirementDetailVo(); + BeanUtils.copyProperties(this, target); + return target; + } +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductUserReqSearchVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductUserReqSearchVo.java new file mode 100644 index 000000000..6dcbcc668 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductUserReqSearchVo.java @@ -0,0 +1,38 @@ +package com.microservices.pms.product.domain.vo; + +import com.microservices.common.core.utils.bean.BeanUtils; +import com.microservices.pms.product.domain.PmsProductRequirement; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 产品需求对象 pms_product_requirement + * + * @author otto + * @date 2023-10-10 + */ +@Data +@ApiModel("用户需求搜索对象") +public class ProductUserReqSearchVo { + /** + * 标题 + */ + @ApiModelProperty(value = "模糊搜索标题、提出人或需求来源") + private String search; + + /** + * 关联产品模块标识 + */ + @ApiModelProperty(value = "关联产品标识", required = true) + @NotNull + private String pmsProductIdentifier; + + public PmsProductRequirement toPmsProductRequirement() { + PmsProductRequirement target = new PmsProductRequirement(); + BeanUtils.copyProperties(this, target); + return target; + } +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/mapper/PmsProductRequirementMapper.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/mapper/PmsProductRequirementMapper.java index 11b3332b0..06922bc46 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/mapper/PmsProductRequirementMapper.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/mapper/PmsProductRequirementMapper.java @@ -2,6 +2,7 @@ package com.microservices.pms.product.mapper; import com.microservices.pms.product.domain.PmsProductRequirement; import com.microservices.pms.product.domain.vo.PmsProductRequirementBatchUpdateVo; +import com.microservices.pms.product.domain.vo.ProductUserReqSearchVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -102,4 +103,6 @@ public interface PmsProductRequirementMapper * @return 产品标识列表 */ List selectProductIdentifierListInRequirementIdList(@Param("idList") List idList); + + List selectUserReqList(ProductUserReqSearchVo productUserReqSearchVo); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/IPmsProductRequirementService.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/IPmsProductRequirementService.java index ae756e8ca..5af4b9dea 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/IPmsProductRequirementService.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/IPmsProductRequirementService.java @@ -5,6 +5,8 @@ import com.microservices.common.core.web.page.GenericsTableDataInfo; import com.microservices.pms.product.domain.PmsProductRequirement; import com.microservices.pms.product.domain.vo.PmsProductRequirementDataVo; import com.microservices.pms.product.domain.vo.PmsProductRequirementDetailVo; +import com.microservices.pms.product.domain.vo.ProductUserReqDataVo; +import com.microservices.pms.product.domain.vo.ProductUserReqSearchVo; import java.util.List; @@ -131,4 +133,13 @@ public interface IPmsProductRequirementService * @return 产品需求列表 */ List selectPmsProductRequirementList(PmsProductRequirement pmsProductRequirementSearch); + + /** + * 查询用户需求列表 + * + * @param enterpriseIdentifier 企业标识 + * @param productUserReqSearchVo 查询条件 + * @return 用户需求列表 + */ + GenericsTableDataInfo selectUserReqList(String enterpriseIdentifier, ProductUserReqSearchVo productUserReqSearchVo); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductRequirementServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductRequirementServiceImpl.java index ee428ab13..4ec57a2f4 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductRequirementServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductRequirementServiceImpl.java @@ -14,9 +14,7 @@ import com.microservices.pms.enterprise.domain.PmsEnterprise; import com.microservices.pms.enterprise.service.IPmsEnterpriseService; import com.microservices.pms.journals.service.IPmsJournalsService; import com.microservices.pms.product.domain.*; -import com.microservices.pms.product.domain.vo.PmsProductRequirementBatchUpdateVo; -import com.microservices.pms.product.domain.vo.PmsProductRequirementDataVo; -import com.microservices.pms.product.domain.vo.PmsProductRequirementDetailVo; +import com.microservices.pms.product.domain.vo.*; import com.microservices.pms.product.mapper.PmsProductRequirementMapper; import com.microservices.pms.product.service.*; import com.microservices.pms.project.domain.PmsProject; @@ -37,13 +35,12 @@ import static com.microservices.common.core.utils.PageUtils.startPage; /** * 产品需求Service业务层处理 - * + * * @author otto * @date 2023-10-10 */ @Service -public class PmsProductRequirementServiceImpl implements IPmsProductRequirementService -{ +public class PmsProductRequirementServiceImpl implements IPmsProductRequirementService { @Autowired private PmsProductRequirementMapper pmsProductRequirementMapper; @Autowired @@ -70,20 +67,19 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS /** * 查询产品需求 - * + * * @param id 产品需求主键 * @return 产品需求 */ @Override - public PmsProductRequirementDetailVo selectPmsProductRequirementDetailById(Long id) - { + public PmsProductRequirementDetailVo selectPmsProductRequirementDetailById(Long id) { PmsProductRequirement pmsProductRequirement = selectPmsProductRequirementById(id, false); return toPmsProductRequirementDetailVo(pmsProductRequirement); } - private PmsProductRequirementDetailVo toPmsProductRequirementDetailVo(PmsProductRequirement pmsProductRequirement){ + private PmsProductRequirementDetailVo toPmsProductRequirementDetailVo(PmsProductRequirement pmsProductRequirement) { PmsProductRequirementDataVo pmsProductRequirementDataVo = toPmsProductRequirementDataVo(pmsProductRequirement, null); - PmsProductRequirementDetailVo pmsProductRequirementDetailVo=pmsProductRequirementDataVo.toPmsProductRequirementDetailVo(); + PmsProductRequirementDetailVo pmsProductRequirementDetailVo = pmsProductRequirementDataVo.toPmsProductRequirementDetailVo(); pmsProductRequirementDetailVo.setContent(pmsProductRequirement.getContent()); // 设置文件列表 pmsProductRequirementDetailVo.setFileList(pmsCommonService.getAllFileByFileIdentifiers(pmsProductRequirement.getFileIdentifiers()) @@ -97,8 +93,8 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS @Override public PmsProductRequirement selectPmsProductRequirementById(Long id, boolean checkRole) { - PmsProductRequirement pmsProductRequirement=pmsProductRequirementMapper.selectPmsProductRequirementById(id); - if(pmsProductRequirement==null){ + PmsProductRequirement pmsProductRequirement = pmsProductRequirementMapper.selectPmsProductRequirementById(id); + if (pmsProductRequirement == null) { throw new NotFoundException("该产品需求不存在(产品需求Id[%d])", id); } PmsProduct pmsProduct = pmsProductService.selectPmsProductByIdentifier(pmsProductRequirement.getPmsProductIdentifier()); @@ -109,7 +105,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS } private PmsProductRequirementDataVo toPmsProductRequirementDataVo(PmsProductRequirement pmsProductRequirement, HashMap hashMap) { - PmsProductRequirementDataVo pmsProductRequirementDataVo=pmsProductRequirement.toPmsProductRequirementDataVo(); + PmsProductRequirementDataVo pmsProductRequirementDataVo = pmsProductRequirement.toPmsProductRequirementDataVo(); // 设置优先级 pmsProductRequirementDataVo.setPriority( PmsUtils.getSelectObjectInCache( @@ -177,36 +173,52 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS return pmsProductRequirementDataVo; } + + @Override + public GenericsTableDataInfo selectUserReqList(String enterpriseIdentifier, ProductUserReqSearchVo productUserReqSearchVo) { + pmsProductService.selectPmsProductByIdentifier(productUserReqSearchVo.getPmsProductIdentifier()); + startPage(); + List userReqList = pmsProductRequirementMapper.selectUserReqList(productUserReqSearchVo); + HashMap selectCache = new HashMap<>(); + return PageUtils.toPage(userReqList, x -> toProductUserReqDataVo(x, selectCache)); + } + + private ProductUserReqDataVo toProductUserReqDataVo(PmsProductRequirement pmsProductRequirement, HashMap hashMap) { + ProductUserReqDataVo productUserReqDataVo = pmsProductRequirement.toProductUserReqDataVo(); + // 设置状态 + productUserReqDataVo.setStatus(ProductReqStatus.getNameByKey(pmsProductRequirement.getStatus())); + + return productUserReqDataVo; + } + /** * 查询产品需求列表 - * + * * @param pmsProductRequirementSearch 产品需求 * @return 产品需求 */ @Override - public GenericsTableDataInfo selectPmsProductRequirementPageList(PmsProductRequirement pmsProductRequirementSearch) - { + public GenericsTableDataInfo selectPmsProductRequirementPageList(PmsProductRequirement pmsProductRequirementSearch) { pmsProductService.selectPmsProductByIdentifier(pmsProductRequirementSearch.getPmsProductIdentifier()); startPage(); - List pmsProductRequirementList=pmsProductRequirementMapper.selectPmsProductRequirementList(pmsProductRequirementSearch); + List pmsProductRequirementList = pmsProductRequirementMapper.selectPmsProductRequirementList(pmsProductRequirementSearch); HashMap selectCache = new HashMap<>(); return PageUtils.toPage(pmsProductRequirementList, x -> toPmsProductRequirementDataVo(x, selectCache)); } /** * 新增产品需求 - * + * * @param pmsProductRequirement 产品需求 * @return 结果 */ @Override - public Long insertPmsProductRequirement(PmsProductRequirement pmsProductRequirement) - { + public Long insertPmsProductRequirement(PmsProductRequirement pmsProductRequirement) { // 校验产品是否存在 PmsProduct pmsProduct = pmsProductService.selectPmsProductByIdentifier(pmsProductRequirement.getPmsProductIdentifier()); pmsProductService.checkManageRole(pmsProduct); // 设置需求优先级,若未传入则设置为默认优先级 - Long priorityId= + Long priorityId = pmsProductPriorityService.selectPmsProductPriorityIdByInputId(pmsProductRequirement.getPriorityId(), PmsConstants.PRODUCT_STATUS_OR_PRIORITY_REQUIREMENT_TYPE); pmsProductRequirement.setPriorityId(priorityId); // 设置默认需求状态 @@ -214,14 +226,14 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS // pmsProductRequirement.setStatusId(statusId); checkPmsProductRequirement(pmsProductRequirement, pmsProduct, null); - Date now=DateUtils.getNowDate(); - String username=SecurityUtils.getUsername(); + Date now = DateUtils.getNowDate(); + String username = SecurityUtils.getUsername(); pmsProductRequirement.setCreateBy(username); pmsProductRequirement.setCreateTime(now); pmsProductRequirement.setUpdateBy(username); pmsProductRequirement.setUpdateTime(now); // 获取当前产品下需求的最大索引值 - Long maxIndex=pmsProductRequirementMapper.selectPmsProductRequirementMaxIndexByProductIdentifier(pmsProductRequirement.getPmsProductIdentifier()); + Long maxIndex = pmsProductRequirementMapper.selectPmsProductRequirementMaxIndexByProductIdentifier(pmsProductRequirement.getPmsProductIdentifier()); if (maxIndex == null) { maxIndex = 1L; } @@ -238,10 +250,10 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS } // 校验产品计划是否存在 - if(pmsProductRequirement.getPmsProductPlanId()!=null){ + if (pmsProductRequirement.getPmsProductPlanId() != null) { PmsProductPlan pmsProductPlan = pmsProductPlanService.selectPmsProductPlanById(pmsProductRequirement.getPmsProductPlanId(), false); - if(!pmsProductPlan.getPmsProductIdentifier().equals(pmsProduct.getProductIdentifier())){ - throw new ServiceException("该产品计划不属于当前产品(计划标题[%s],产品名称[%s])",pmsProductPlan.getPlanTitle(),pmsProduct.getProductName()); + if (!pmsProductPlan.getPmsProductIdentifier().equals(pmsProduct.getProductIdentifier())) { + throw new ServiceException("该产品计划不属于当前产品(计划标题[%s],产品名称[%s])", pmsProductPlan.getPlanTitle(), pmsProduct.getProductName()); } if (oldPmsProductRequirement == null || oldPmsProductRequirement.getPmsProductPlanId() == null) { @@ -263,7 +275,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS // 校验模块是否存在 - if(pmsProductRequirement.getPmsProductModuleId()!=null){ + if (pmsProductRequirement.getPmsProductModuleId() != null) { checkModuleId(pmsProductRequirement.getPmsProductModuleId(), pmsProduct); } @@ -272,8 +284,8 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS pmsProductRequirement.setTagIds(pmsProductRequirement.getTags()); //校验结束时间需大于开始时间 - if(pmsProductRequirement.getStartTime()!=null&&pmsProductRequirement.getEndTime()!=null){ - if(pmsProductRequirement.getStartTime().after(pmsProductRequirement.getEndTime())){ + if (pmsProductRequirement.getStartTime() != null && pmsProductRequirement.getEndTime() != null) { + if (pmsProductRequirement.getStartTime().after(pmsProductRequirement.getEndTime())) { throw new ServiceException("结束时间不能早于开始时间"); } } @@ -284,19 +296,18 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS /** * 修改产品需求 - * + * * @param pmsProductRequirement 产品需求 * @return 结果 */ @Override - public int updatePmsProductRequirement(PmsProductRequirement pmsProductRequirement) - { + public int updatePmsProductRequirement(PmsProductRequirement pmsProductRequirement) { // 通过id检查需修改的产品需求是否存在 PmsProductRequirement oldPmsProductRequirement = selectPmsProductRequirementById(pmsProductRequirement.getId(), true); pmsProductRequirement.setPmsProductIdentifier(oldPmsProductRequirement.getPmsProductIdentifier()); - if(pmsProductRequirement.getPriorityId()!=null){ + if (pmsProductRequirement.getPriorityId() != null) { // 设置需求优先级 - Long priorityId= + Long priorityId = pmsProductPriorityService.selectPmsProductPriorityIdByInputId(pmsProductRequirement.getPriorityId(), PmsConstants.PRODUCT_STATUS_OR_PRIORITY_REQUIREMENT_TYPE); pmsProductRequirement.setPriorityId(priorityId); } @@ -304,7 +315,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS // 设置需求状态 // TODO:需要根据用户需求、需求规格来判断需求状态 // pmsProductRequirement.setStatusId(statusId); - PmsProduct pmsProduct=pmsProductService.selectPmsProductByIdentifier(oldPmsProductRequirement.getPmsProductIdentifier()); + PmsProduct pmsProduct = pmsProductService.selectPmsProductByIdentifier(oldPmsProductRequirement.getPmsProductIdentifier()); checkPmsProductRequirement(pmsProductRequirement, pmsProduct, oldPmsProductRequirement); if (pmsProductRequirement.getStartTime() != null && pmsProductRequirement.getEndTime() == null) { if (oldPmsProductRequirement.getEndTime() != null && pmsProductRequirement.getStartTime().after(oldPmsProductRequirement.getEndTime())) { @@ -333,14 +344,13 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS /** * 批量删除产品需求 - * + * * @param ids 需要删除的产品需求主键 * @return 结果 */ @Override @Transactional(rollbackFor = Exception.class) - public int deletePmsProductRequirementByIds(Long[] ids) - { + public int deletePmsProductRequirementByIds(Long[] ids) { int success = 0; for (Long id : ids) { success += deletePmsProductRequirementById(id); @@ -350,14 +360,13 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS /** * 删除产品需求信息 - * + * * @param id 产品需求主键 * @return 结果 */ @Override @Transactional(rollbackFor = Exception.class) - public int deletePmsProductRequirementById(Long id) - { + public int deletePmsProductRequirementById(Long id) { PmsProductRequirement oldPmsProductRequirement = selectPmsProductRequirementById(id, true); if (oldPmsProductRequirement.getPmsProductPlanId() != null) { pmsProductPlanService.updatePmsProductPlanChange(oldPmsProductRequirement.getPmsProductPlanId()); @@ -374,9 +383,9 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS @Override public PmsProductRequirementDetailVo selectPmsProductRequirementDetailByProductIdentifierAndIndex(String productIdentifier, Long index) { - PmsProductRequirement pmsProductRequirement=pmsProductRequirementMapper.selectPmsProductRequirementByProductIdentifierAndIndex(productIdentifier,index); - if(pmsProductRequirement==null){ - throw new ServiceException("该产品需求不存在(产品标识[%s],产品需求索引[%d])",productIdentifier,index); + PmsProductRequirement pmsProductRequirement = pmsProductRequirementMapper.selectPmsProductRequirementByProductIdentifierAndIndex(productIdentifier, index); + if (pmsProductRequirement == null) { + throw new ServiceException("该产品需求不存在(产品标识[%s],产品需求索引[%d])", productIdentifier, index); } return toPmsProductRequirementDetailVo(pmsProductRequirement); } @@ -446,16 +455,16 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS private int batchUpdatePmsProductRequirementByJsonObject(List idList, JSONObject jsonObject) { PmsProductRequirementBatchUpdateVo pmsProductRequirementBatchUpdateVo = new PmsProductRequirementBatchUpdateVo(); pmsProductRequirementBatchUpdateVo.setIdList(idList); - if(jsonObject.containsKey("priorityId")){ + if (jsonObject.containsKey("priorityId")) { pmsProductRequirementBatchUpdateVo.setPriorityId(jsonObject.getLong("priorityId")); pmsProductRequirementBatchUpdateVo.setPriorityIdIsChange(true); } // TODO:需考虑是否涉及状态的变更 - if(jsonObject.containsKey("pmsProductModuleId")){ + if (jsonObject.containsKey("pmsProductModuleId")) { pmsProductRequirementBatchUpdateVo.setPmsProductModuleId(jsonObject.getLong("pmsProductModuleId")); pmsProductRequirementBatchUpdateVo.setPmsProductModuleIdIsChange(true); } - if(jsonObject.containsKey("tags")){ + if (jsonObject.containsKey("tags")) { pmsProductRequirementBatchUpdateVo.setTagIds(jsonObject.getString("tags")); pmsProductRequirementBatchUpdateVo.setTagIdsIsChange(true); } @@ -463,7 +472,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS pmsProductRequirementBatchUpdateVo.setRequirementAssigneeGitlinkIds(jsonObject.getString("requirementAssigneeGitlinkIds")); pmsProductRequirementBatchUpdateVo.setRequirementAssigneeGitlinkIdsIsChange(true); } - if(jsonObject.containsKey("pmsProjectId")){ + if (jsonObject.containsKey("pmsProjectId")) { pmsProductRequirementBatchUpdateVo.setPmsProjectId(jsonObject.getLong("pmsProjectId")); pmsProductRequirementBatchUpdateVo.setPmsProjectIdIsChange(true); } diff --git a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductRequirementMapper.xml b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductRequirementMapper.xml index 85d9f60e5..3e1636d4a 100644 --- a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductRequirementMapper.xml +++ b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductRequirementMapper.xml @@ -30,6 +30,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -57,6 +59,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from_id, project_req_id, type, + source_user, + source_company, identifier from pms_product_requirement @@ -133,6 +137,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + insert into pms_product_requirement @@ -161,6 +181,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" project_req_id, type, identifier, + source_user, + source_company, #{index}, @@ -187,6 +209,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{projectReqId}, #{type}, #{identifier}, + #{sourceUser}, + #{sourceCompany}, @@ -217,6 +241,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" project_req_id = #{project_req_id}, type = #{type}, identifier = #{identifier}, + source_user = #{sourceUser}, + source_company = #{sourceCompany}, where id = #{id}