From be54bc56d8c8af9f45f0d92aa8e0b658b4f35819 Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Sat, 30 Nov 2024 09:19:40 +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=E9=9C=80?= =?UTF-8?q?=E6=B1=82=E8=A7=84=E6=A0=BC=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. 新增接口:获取需求规格详细信息 Signed-off-by: OTTO <731554297@qq.com> --- .../controller/ProductReqSpecsController.java | 101 ++++++++++++++++ .../controller/ProductUserReqController.java | 10 +- .../product/domain/PmsProductRequirement.java | 9 +- .../product/domain/enums/CommonEnumType.java | 20 ++++ .../domain/enums/ProductReqStatus.java | 7 +- .../domain/vo/ProductReqSpecsDataVo.java | 51 ++++++++ .../domain/vo/ProductReqSpecsDetailVo.java | 32 +++++ .../domain/vo/ProductReqSpecsSearchVo.java | 48 ++++++++ .../domain/vo/ProductUserReqDataVo.java | 14 ++- .../domain/vo/ProductUserReqSearchVo.java | 9 +- .../mapper/PmsProductRequirementMapper.java | 3 + .../IPmsProductRequirementService.java | 6 +- .../PmsProductRequirementServiceImpl.java | 61 +++++++++- .../pms/PmsProductRequirementMapper.xml | 111 ++++++++++++------ 14 files changed, 419 insertions(+), 63 deletions(-) create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/ProductReqSpecsController.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/enums/CommonEnumType.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqSpecsDataVo.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqSpecsDetailVo.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqSpecsSearchVo.java diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/ProductReqSpecsController.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/ProductReqSpecsController.java new file mode 100644 index 000000000..a9b682f60 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/ProductReqSpecsController.java @@ -0,0 +1,101 @@ +package com.microservices.pms.product.controller; + +import com.microservices.common.core.web.controller.BaseController; +import com.microservices.common.core.web.domain.AjaxResult; +import com.microservices.common.core.web.domain.GenericsAjaxResult; +import com.microservices.common.core.web.page.GenericsTableDataInfo; +import com.microservices.common.log.annotation.Log; +import com.microservices.common.log.enums.BusinessType; +import com.microservices.common.security.annotation.RequiresPermissions; +import com.microservices.pms.product.domain.vo.*; +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.*; + +/** + * 产品需求规格相关接口 + * + * @author otto + * @date 2023-10-10 + */ +@RestController +@Api(tags = "项目管理-需求规格相关接口") +@RequestMapping("/{enterpriseIdentifier}/productRequirementSpecs") +@ApiImplicitParams({ + @ApiImplicitParam(name = "enterpriseIdentifier", value = "企业标识", paramType = "path", dataType = "String") +}) +public class ProductReqSpecsController extends BaseController { + @Autowired + private IPmsProductRequirementService pmsProductRequirementService; + + /** + * 查询产品需求规格列表 + */ + @ApiOperation(value = "查询需求规格列表") + @RequiresPermissions("pms:pmsProduct:show") + @GetMapping("/list") + public GenericsTableDataInfo list(@PathVariable String enterpriseIdentifier, @Validated ProductReqSpecsSearchVo productReqSpecsSearchVo) { + return pmsProductRequirementService.selectReqSpecsList(productReqSpecsSearchVo); + } + + /** + * 获取需求规格详细信息 + */ + @RequiresPermissions("pms:pmsProduct:show") + @GetMapping(value = "/{id}") + @ApiOperation(value = "获取需求规格详细信息") + public GenericsAjaxResult getInfo(@PathVariable("id") Long id) { + return genericsSuccess(pmsProductRequirementService.selectReqSpecsDetailById(id)); + } + + /** + * 新增需求规格 + */ + @RequiresPermissions("pms:pmsProductRequirement:add") + @Log(title = "需求规格", businessType = BusinessType.INSERT) + @PostMapping + @ApiOperation(value = "新增需求规格") + public AjaxResult add(@PathVariable String enterpriseIdentifier, + @RequestBody @Validated ProductUserReqInputVo productUserReqInputVo) { + productUserReqInputVo.setEnterpriseIdentifier(enterpriseIdentifier); + return success(pmsProductRequirementService.insertUserReq(productUserReqInputVo)); + } + + /** + * 修改需求规格 + */ + @RequiresPermissions("pms:pmsProductRequirement:edit") + @Log(title = "需求规格", businessType = BusinessType.UPDATE) + @PutMapping + @ApiOperation(value = "修改需求规格") + public AjaxResult edit(@RequestBody @Validated ProductUserReqUpdateVo productUserReqUpdateVo) { + return toAjax(pmsProductRequirementService.updateUserReq(productUserReqUpdateVo)); + } + + /** + * 删除需求规格 + */ + @RequiresPermissions("pms:pmsProductRequirement:remove") + @Log(title = "需求规格", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + @ApiOperation(value = "删除需求规格") + public AjaxResult remove(@PathVariable Long[] ids) { + return toAjax(pmsProductRequirementService.deleteUserReqByIds(ids)); + } + + /** + * 评审需求规格 + */ + @RequiresPermissions("pms:pmsProductRequirement:edit") + @Log(title = "需求规格", businessType = BusinessType.UPDATE) + @PutMapping("/review") + @ApiOperation(value = "评审需求规格") + public AjaxResult review(@RequestBody @Validated ProductUserReqReviewVo productUserReqReviewVo) { + return toAjax(pmsProductRequirementService.reviewUserReq(productUserReqReviewVo)); + } +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/ProductUserReqController.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/ProductUserReqController.java index 0e32b5af6..45af2d3ab 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/ProductUserReqController.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/ProductUserReqController.java @@ -8,7 +8,6 @@ import com.microservices.common.log.annotation.Log; import com.microservices.common.log.enums.BusinessType; import com.microservices.common.security.annotation.RequiresPermissions; import com.microservices.pms.product.domain.vo.*; -import com.microservices.pms.product.service.IPmsProductModuleService; import com.microservices.pms.product.service.IPmsProductRequirementService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -26,15 +25,13 @@ import org.springframework.web.bind.annotation.*; */ @RestController @Api(tags = "项目管理-用户需求相关接口") -@RequestMapping("/{enterpriseIdentifier}/pmsProductUserRequirement") +@RequestMapping("/{enterpriseIdentifier}/productUserRequirement") @ApiImplicitParams({ @ApiImplicitParam(name = "enterpriseIdentifier", value = "企业标识", paramType = "path", dataType = "String") }) public class ProductUserReqController extends BaseController { @Autowired private IPmsProductRequirementService pmsProductRequirementService; - @Autowired - private IPmsProductModuleService pmsProductModuleService; /** * 查询产品用户需求列表 @@ -42,9 +39,8 @@ public class ProductUserReqController extends BaseController { @ApiOperation(value = "查询用户需求列表") @RequiresPermissions("pms:pmsProduct:show") @GetMapping("/list") - public GenericsTableDataInfo list(@PathVariable String enterpriseIdentifier, @Validated ProductUserReqSearchVo productUserReqSearchVo) { - startPage(); - return pmsProductRequirementService.selectUserReqList(enterpriseIdentifier, productUserReqSearchVo); + public GenericsTableDataInfo list(@Validated ProductUserReqSearchVo productUserReqSearchVo) { + return pmsProductRequirementService.selectUserReqList(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 a996859e7..82c693c7f 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.ProductReqSpecsDataVo; import com.microservices.pms.product.domain.vo.ProductUserReqDataVo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -115,7 +116,7 @@ public class PmsProductRequirement extends BaseEntity private Long pmsProjectId; /** 关联项目ID */ - @ApiModelProperty(value = "关联项目ID") + @ApiModelProperty(value = "关联模块ID") @JsonInclude(JsonInclude.Include.NON_EMPTY) private List childrenModuleIdList; @@ -158,4 +159,10 @@ public class PmsProductRequirement extends BaseEntity BeanUtils.copyProperties(this, target); return target; } + + public ProductReqSpecsDataVo toProductReqSpecsDataVo() { + ProductReqSpecsDataVo target = new ProductReqSpecsDataVo(); + BeanUtils.copyProperties(this, target); + return target; + } } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/enums/CommonEnumType.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/enums/CommonEnumType.java new file mode 100644 index 000000000..686687e13 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/enums/CommonEnumType.java @@ -0,0 +1,20 @@ +package com.microservices.pms.product.domain.enums; + +import lombok.Data; + +/** + * @author OTTO + */ +@Data +public class CommonEnumType { + private String key; + private String name; + + public CommonEnumType() { + } + + public CommonEnumType(String key, String name) { + this.key = key; + this.name = name; + } +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/enums/ProductReqStatus.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/enums/ProductReqStatus.java index b947b51a7..de9053ace 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/enums/ProductReqStatus.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/enums/ProductReqStatus.java @@ -4,6 +4,7 @@ import lombok.Getter; /** * 产品需求状态 + * * @author OTTO */ @Getter @@ -12,7 +13,7 @@ public enum ProductReqStatus { REJECTED_USER_REQ("rejectedUserReq", "已拒绝", "已拒绝的用户需求"), REVIEWED_USER_REQ("reviewedUserReq", "已评审", "已评审的用户需求"), PENDING_REVIEW_REQ_SPECS("pendingReviewReqSpecs", "待评审", "待评审的需求规格"), - REVIEWED_REQ_SPECS_CHANGING("reviewedReqSpecsChanging", "已评审", "已评审的需求规格(变更中)"), + REVIEWED_REQ_SPECS_CHANGING("reviewedReqSpecsChanging", "已评审(变更中)", "已评审的需求规格(变更中)"), PLANNED_REQ_SPECS("plannedReqSpecs", "计划中", "计划中的需求规格"), REJECTED_REQ_SPECS("rejectedReqSpecs", "已拒绝", "已拒绝的需求规格"), REVIEWED_REQ_SPECS("reviewedReqSpecs", "已评审", "已评审的需求规格"), @@ -36,10 +37,10 @@ public enum ProductReqStatus { return null; } - public static String getNameByKey(String status) { + public static CommonEnumType getTypeByKey(String status) { for (ProductReqStatus productReqStatus : ProductReqStatus.values()) { if (productReqStatus.getKey().equals(status)) { - return productReqStatus.getName(); + return new CommonEnumType(productReqStatus.getKey(), productReqStatus.getName()); } } return null; diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqSpecsDataVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqSpecsDataVo.java new file mode 100644 index 000000000..214fab718 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqSpecsDataVo.java @@ -0,0 +1,51 @@ +package com.microservices.pms.product.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.microservices.common.core.utils.bean.BeanUtils; +import com.microservices.pms.product.domain.PmsProductModule; +import com.microservices.pms.product.domain.enums.CommonEnumType; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * 产品需求对象 pms_product_requirement + * + * @author otto + * @date 2023-10-10 + */ +@Data +@ApiModel("需求规格数据对象") +public class ProductReqSpecsDataVo { + private Long id; + + @ApiModelProperty(value = "需求标识") + private String identifier; + + @ApiModelProperty(value = "标题") + private String title; + + @ApiModelProperty(value = "需求状态") + private CommonEnumType status; + + @ApiModelProperty(value = "产品需求类型") + private String type; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + /** + * 关联产品模块 + */ + @ApiModelProperty(value = "关联产品模块") + private PmsProductModule pmsProductModule; + + public ProductReqSpecsDetailVo toProductReqSpecsDetailVo() { + ProductReqSpecsDetailVo target = new ProductReqSpecsDetailVo(); + BeanUtils.copyProperties(this, target); + return target; + } +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqSpecsDetailVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqSpecsDetailVo.java new file mode 100644 index 000000000..1c6e62257 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqSpecsDetailVo.java @@ -0,0 +1,32 @@ +package com.microservices.pms.product.domain.vo; + +import com.alibaba.fastjson2.JSONObject; +import com.microservices.pms.project.domain.PmsProject; +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 ProductReqSpecsDetailVo extends ProductReqSpecsDataVo { + @ApiModelProperty(value = "正文") + private String content; + + @ApiModelProperty(value = "附件列表") + private List fileList; + + @ApiModelProperty(value = "关联计划(原项目需求)") + private JSONObject projectIssue; + + @ApiModelProperty(value = "关联项目") + private PmsProject project; +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqSpecsSearchVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqSpecsSearchVo.java new file mode 100644 index 000000000..9e94a5dbe --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqSpecsSearchVo.java @@ -0,0 +1,48 @@ +package com.microservices.pms.product.domain.vo; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 产品需求对象 pms_product_requirement + * + * @author otto + * @date 2023-10-10 + */ +@Data +@ApiModel("用户需求搜索对象") +public class ProductReqSpecsSearchVo { + /** + * 标题 + */ + @ApiModelProperty(value = "模糊搜索标题") + private String title; + + /** + * 关联产品模块标识 + */ + @ApiModelProperty(value = "关联产品标识", required = true) + @NotNull + private String pmsProductIdentifier; + + /** + * 关联产品模块ID + */ + @ApiModelProperty(value = "关联产品模块ID(传0查询不属于任何模块的需求)") + private Long pmsProductModuleId; + + @ApiModelProperty(value = "产品需求状态(全部状态请传空)") + private String status; + + /** + * 关联项目ID + */ + @ApiModelProperty(value = "关联模块ID", hidden = true) + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List childrenModuleIdList; +} 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 index 8a39e60a0..c18c73c26 100644 --- 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 @@ -1,12 +1,15 @@ package com.microservices.pms.product.domain.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import com.microservices.common.core.utils.bean.BeanUtils; import com.microservices.pms.product.domain.PmsProductModule; -import com.microservices.pms.project.domain.vo.BaseEntityVo; +import com.microservices.pms.product.domain.enums.CommonEnumType; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.Date; + /** * 产品需求对象 pms_product_requirement * @@ -15,15 +18,14 @@ import lombok.Data; */ @Data @ApiModel("用户需求数据对象") -public class ProductUserReqDataVo extends BaseEntityVo { +public class ProductUserReqDataVo { private Long id; @ApiModelProperty(value = "标题") private String title; - @ApiModelProperty(value = "需求状态") - private String status; + private CommonEnumType status; @ApiModelProperty(value = "从属产品模块") private PmsProductModule pmsProductModule; @@ -34,6 +36,10 @@ public class ProductUserReqDataVo extends BaseEntityVo { @ApiModelProperty(value = "需求来源单位") private String sourceCompany; + @ApiModelProperty(value = "需求提出时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + public ProductUserReqDetailVo toProductReqUserDetailVo() { ProductUserReqDetailVo target = new ProductUserReqDetailVo(); BeanUtils.copyProperties(this, 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 index 6dcbcc668..58d3e2a47 100644 --- 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 @@ -1,7 +1,5 @@ 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; @@ -30,9 +28,6 @@ public class ProductUserReqSearchVo { @NotNull private String pmsProductIdentifier; - public PmsProductRequirement toPmsProductRequirement() { - PmsProductRequirement target = new PmsProductRequirement(); - BeanUtils.copyProperties(this, target); - return target; - } + @ApiModelProperty(value = "产品需求状态(全部状态请传空)") + private String status; } 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 06922bc46..bd4a6cd50 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.ProductReqSpecsSearchVo; import com.microservices.pms.product.domain.vo.ProductUserReqSearchVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -105,4 +106,6 @@ public interface PmsProductRequirementMapper List selectProductIdentifierListInRequirementIdList(@Param("idList") List idList); List selectUserReqList(ProductUserReqSearchVo productUserReqSearchVo); + + List selectReqSpecsList(ProductReqSpecsSearchVo productReqSpecsSearchVo); } 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 5fd4f5b71..50fedf95b 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 @@ -138,7 +138,7 @@ public interface IPmsProductRequirementService * @param productUserReqSearchVo 查询条件 * @return 用户需求列表 */ - GenericsTableDataInfo selectUserReqList(String enterpriseIdentifier, ProductUserReqSearchVo productUserReqSearchVo); + GenericsTableDataInfo selectUserReqList(ProductUserReqSearchVo productUserReqSearchVo); ProductUserReqDetailVo selectUserReqDetailById(Long id); @@ -149,4 +149,8 @@ public interface IPmsProductRequirementService int deleteUserReqByIds(Long[] ids); int reviewUserReq(ProductUserReqReviewVo productUserReqReviewVo); + + GenericsTableDataInfo selectReqSpecsList(ProductReqSpecsSearchVo productReqSpecsSearchVo); + + ProductReqSpecsDetailVo selectReqSpecsDetailById(Long id); } 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 48c999a6b..d664ba584 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 @@ -24,6 +24,7 @@ import com.microservices.pms.product.mapper.PmsProductRequirementMapper; import com.microservices.pms.product.service.*; import com.microservices.pms.project.domain.PmsProject; import com.microservices.pms.project.service.IPmsProjectService; +import com.microservices.pms.project.service.PmsProjectIssuesService; import com.microservices.pms.utils.PmsConstants; import com.microservices.pms.utils.PmsUtils; import com.microservices.system.api.domain.SysUser; @@ -67,6 +68,8 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS @Autowired private IPmsProjectService pmsProjectService; @Autowired + private PmsProjectIssuesService pmsProjectIssuesService; + @Autowired @Lazy private IPmsJournalsService pmsJournalsService; @@ -180,7 +183,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS @Override - public GenericsTableDataInfo selectUserReqList(String enterpriseIdentifier, ProductUserReqSearchVo productUserReqSearchVo) { + public GenericsTableDataInfo selectUserReqList(ProductUserReqSearchVo productUserReqSearchVo) { pmsProductService.selectPmsProductByIdentifier(productUserReqSearchVo.getPmsProductIdentifier()); startPage(); List userReqList = pmsProductRequirementMapper.selectUserReqList(productUserReqSearchVo); @@ -190,7 +193,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS private ProductUserReqDataVo toProductUserReqDataVo(PmsProductRequirement pmsProductRequirement) { ProductUserReqDataVo productUserReqDataVo = pmsProductRequirement.toProductUserReqDataVo(); // 设置状态 - productUserReqDataVo.setStatus(ProductReqStatus.getNameByKey(pmsProductRequirement.getStatus())); + productUserReqDataVo.setStatus(ProductReqStatus.getTypeByKey(pmsProductRequirement.getStatus())); return productUserReqDataVo; } @@ -284,6 +287,60 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS return updateRequirement(userReq, userReq.getPmsProductIdentifier()); } + @Override + public GenericsTableDataInfo selectReqSpecsList(ProductReqSpecsSearchVo productReqSpecsSearchVo) { + pmsProductService.selectPmsProductByIdentifier(productReqSpecsSearchVo.getPmsProductIdentifier()); + if (productReqSpecsSearchVo.getPmsProductModuleId() != null && productReqSpecsSearchVo.getPmsProductModuleId() != 0) { + List moduleIdList = pmsProductModuleService.selectChildrenPmsProductModuleIdList(productReqSpecsSearchVo.getPmsProductModuleId()); + productReqSpecsSearchVo.setChildrenModuleIdList(moduleIdList); + } + startPage(); + List userReqList = pmsProductRequirementMapper.selectReqSpecsList(productReqSpecsSearchVo); + HashMap hashMap = new HashMap<>(); + return PageUtils.toPage(userReqList, x -> toProductReqSpecsDataVo(x, hashMap)); + } + + + private ProductReqSpecsDataVo toProductReqSpecsDataVo(PmsProductRequirement pmsProductRequirement, HashMap hashMap) { + ProductReqSpecsDataVo productReqSpecsDataVo = pmsProductRequirement.toProductReqSpecsDataVo(); + // 设置状态 + productReqSpecsDataVo.setStatus(ProductReqStatus.getTypeByKey(pmsProductRequirement.getStatus())); + + // 设置产品模块 + if (pmsProductRequirement.getPmsProductModuleId() != null) { + productReqSpecsDataVo.setPmsProductModule( + PmsUtils.getSelectObjectInCache( + hashMap + , x -> pmsProductModuleService.selectPmsProductModuleById(x, false) + , pmsProductRequirement.getPmsProductModuleId()) + ); + } + return productReqSpecsDataVo; + } + + @Override + public ProductReqSpecsDetailVo selectReqSpecsDetailById(Long id) { + PmsProductRequirement pmsProductRequirement = selectPmsProductRequirementById(id, false); + return toProductReqSpecsDetailVo(pmsProductRequirement); + } + + private ProductReqSpecsDetailVo toProductReqSpecsDetailVo(PmsProductRequirement pmsProductRequirement) { + ProductReqSpecsDataVo productReqSpecsDataVo = toProductReqSpecsDataVo(pmsProductRequirement, null); + ProductReqSpecsDetailVo productReqSpecsDetailVo = productReqSpecsDataVo.toProductReqSpecsDetailVo(); + productReqSpecsDetailVo.setContent(pmsProductRequirement.getContent()); + // 设置文件列表 + productReqSpecsDetailVo.setFileList(pmsCommonService.getAllFileByFileIdentifiers(pmsProductRequirement.getFileIdentifiers()) + ); + if (pmsProductRequirement.getPmsProjectId() != null) { + productReqSpecsDetailVo.setProject(pmsProjectService.selectAndCheckPmsProjectById(pmsProductRequirement.getPmsProjectId())); + if (pmsProductRequirement.getProjectReqId() != null) { + productReqSpecsDetailVo.setProjectIssue( + pmsProjectIssuesService.selectPmsProjectIssueById(pmsProductRequirement.getProjectReqId(), pmsProductRequirement.getPmsProjectId())); + } + } + + return productReqSpecsDetailVo; + } /** * 删除产品需求信息 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 fa1d87ed4..ba86713a2 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 @@ -1,31 +1,31 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - + + + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - + @@ -65,7 +65,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from pms_product_requirement - /*keep orderby*/ @@ -78,21 +79,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - and title like concat('%', #{title}, '%') - and priority_id = #{priorityId} - and pms_product_plan_id = #{pmsProductPlanId} - and pms_product_identifier = #{pmsProductIdentifier} - and content = #{content} + and title like concat('%', #{title}, '%') + and priority_id = #{priorityId} + and pms_product_plan_id = #{pmsProductPlanId} + and pms_product_identifier = #{pmsProductIdentifier} + and content = #{content} and FIND_IN_SET(#{tagId},tag_ids) - and create_by = #{createBy} - and start_time = #{startTime} - and end_time = #{endTime} + and create_by = #{createBy} + and start_time = #{startTime} + and end_time = #{endTime} and file_identifiers = #{fileIdentifiers} - and sort = #{sort} + and sort = #{sort} and FIND_IN_SET(#{requirementAssigneeGitlinkId},requirement_assignee_gitlink_ids) - and pms_project_id = #{pmsProjectId} + and pms_project_id = #{pmsProjectId} and pms_product_identifier in @@ -118,13 +119,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + + - + insert into pms_product_requirement `index`, @@ -183,7 +216,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" identifier, source_user, source_company, - + #{index}, #{title}, @@ -211,7 +244,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{identifier}, #{sourceUser}, #{sourceCompany}, - + @@ -267,11 +300,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from pms_product_requirement where id = #{id} + delete + from pms_product_requirement + where id = #{id} - delete from pms_product_requirement where id in + delete from pms_product_requirement where id in #{id}