feat(项目管理产品需求重构): 完善产品中的需求规格功能开发
1. 新增接口:查询需求规格列表 2. 新增接口:获取需求规格详细信息 Signed-off-by: OTTO <731554297@qq.com>
This commit is contained in:
parent
8f69ef0d20
commit
be54bc56d8
|
|
@ -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<ProductReqSpecsDataVo> list(@PathVariable String enterpriseIdentifier, @Validated ProductReqSpecsSearchVo productReqSpecsSearchVo) {
|
||||
return pmsProductRequirementService.selectReqSpecsList(productReqSpecsSearchVo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取需求规格详细信息
|
||||
*/
|
||||
@RequiresPermissions("pms:pmsProduct:show")
|
||||
@GetMapping(value = "/{id}")
|
||||
@ApiOperation(value = "获取需求规格详细信息")
|
||||
public GenericsAjaxResult<ProductReqSpecsDetailVo> 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));
|
||||
}
|
||||
}
|
||||
|
|
@ -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<ProductUserReqDataVo> list(@PathVariable String enterpriseIdentifier, @Validated ProductUserReqSearchVo productUserReqSearchVo) {
|
||||
startPage();
|
||||
return pmsProductRequirementService.selectUserReqList(enterpriseIdentifier, productUserReqSearchVo);
|
||||
public GenericsTableDataInfo<ProductUserReqDataVo> list(@Validated ProductUserReqSearchVo productUserReqSearchVo) {
|
||||
return pmsProductRequirementService.selectUserReqList(productUserReqSearchVo);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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<Long> 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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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<SysFileInfo> fileList;
|
||||
|
||||
@ApiModelProperty(value = "关联计划(原项目需求)")
|
||||
private JSONObject projectIssue;
|
||||
|
||||
@ApiModelProperty(value = "关联项目")
|
||||
private PmsProject project;
|
||||
}
|
||||
|
|
@ -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<Long> childrenModuleIdList;
|
||||
}
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<String> selectProductIdentifierListInRequirementIdList(@Param("idList") List<Long> idList);
|
||||
|
||||
List<PmsProductRequirement> selectUserReqList(ProductUserReqSearchVo productUserReqSearchVo);
|
||||
|
||||
List<PmsProductRequirement> selectReqSpecsList(ProductReqSpecsSearchVo productReqSpecsSearchVo);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ public interface IPmsProductRequirementService
|
|||
* @param productUserReqSearchVo 查询条件
|
||||
* @return 用户需求列表
|
||||
*/
|
||||
GenericsTableDataInfo<ProductUserReqDataVo> selectUserReqList(String enterpriseIdentifier, ProductUserReqSearchVo productUserReqSearchVo);
|
||||
GenericsTableDataInfo<ProductUserReqDataVo> selectUserReqList(ProductUserReqSearchVo productUserReqSearchVo);
|
||||
|
||||
ProductUserReqDetailVo selectUserReqDetailById(Long id);
|
||||
|
||||
|
|
@ -149,4 +149,8 @@ public interface IPmsProductRequirementService
|
|||
int deleteUserReqByIds(Long[] ids);
|
||||
|
||||
int reviewUserReq(ProductUserReqReviewVo productUserReqReviewVo);
|
||||
|
||||
GenericsTableDataInfo<ProductReqSpecsDataVo> selectReqSpecsList(ProductReqSpecsSearchVo productReqSpecsSearchVo);
|
||||
|
||||
ProductReqSpecsDetailVo selectReqSpecsDetailById(Long id);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<ProductUserReqDataVo> selectUserReqList(String enterpriseIdentifier, ProductUserReqSearchVo productUserReqSearchVo) {
|
||||
public GenericsTableDataInfo<ProductUserReqDataVo> selectUserReqList(ProductUserReqSearchVo productUserReqSearchVo) {
|
||||
pmsProductService.selectPmsProductByIdentifier(productUserReqSearchVo.getPmsProductIdentifier());
|
||||
startPage();
|
||||
List<PmsProductRequirement> 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<ProductReqSpecsDataVo> selectReqSpecsList(ProductReqSpecsSearchVo productReqSpecsSearchVo) {
|
||||
pmsProductService.selectPmsProductByIdentifier(productReqSpecsSearchVo.getPmsProductIdentifier());
|
||||
if (productReqSpecsSearchVo.getPmsProductModuleId() != null && productReqSpecsSearchVo.getPmsProductModuleId() != 0) {
|
||||
List<Long> moduleIdList = pmsProductModuleService.selectChildrenPmsProductModuleIdList(productReqSpecsSearchVo.getPmsProductModuleId());
|
||||
productReqSpecsSearchVo.setChildrenModuleIdList(moduleIdList);
|
||||
}
|
||||
startPage();
|
||||
List<PmsProductRequirement> userReqList = pmsProductRequirementMapper.selectReqSpecsList(productReqSpecsSearchVo);
|
||||
HashMap<String, Object> hashMap = new HashMap<>();
|
||||
return PageUtils.toPage(userReqList, x -> toProductReqSpecsDataVo(x, hashMap));
|
||||
}
|
||||
|
||||
|
||||
private ProductReqSpecsDataVo toProductReqSpecsDataVo(PmsProductRequirement pmsProductRequirement, HashMap<String, Object> 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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除产品需求信息
|
||||
|
|
|
|||
|
|
@ -1,31 +1,31 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.microservices.pms.product.mapper.PmsProductRequirementMapper">
|
||||
|
||||
<resultMap type="com.microservices.pms.product.domain.PmsProductRequirement" id="PmsProductRequirementResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="index" column="index" />
|
||||
<result property="title" column="title" />
|
||||
<result property="id" column="id"/>
|
||||
<result property="index" column="index"/>
|
||||
<result property="title" column="title"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="priorityId" column="priority_id" />
|
||||
<result property="pmsProductModuleId" column="pms_product_module_id" />
|
||||
<result property="pmsProductPlanId" column="pms_product_plan_id" />
|
||||
<result property="pmsProductIdentifier" column="pms_product_identifier" />
|
||||
<result property="content" column="content" />
|
||||
<result property="tagIds" column="tag_ids" />
|
||||
<result property="startTime" column="start_time" />
|
||||
<result property="endTime" column="end_time" />
|
||||
<result property="priorityId" column="priority_id"/>
|
||||
<result property="pmsProductModuleId" column="pms_product_module_id"/>
|
||||
<result property="pmsProductPlanId" column="pms_product_plan_id"/>
|
||||
<result property="pmsProductIdentifier" column="pms_product_identifier"/>
|
||||
<result property="content" column="content"/>
|
||||
<result property="tagIds" column="tag_ids"/>
|
||||
<result property="startTime" column="start_time"/>
|
||||
<result property="endTime" column="end_time"/>
|
||||
<result property="fileIdentifiers" column="file_identifiers"/>
|
||||
<result property="sort" column="sort" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="delFlag" column="del_flag" />
|
||||
<result property="sort" column="sort"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
<result property="requirementAssigneeGitlinkIds" column="requirement_assignee_gitlink_ids"/>
|
||||
<result property="pmsProjectId" column="pms_project_id" />
|
||||
<result property="pmsProjectId" column="pms_project_id"/>
|
||||
<result property="fromId" column="from_id"/>
|
||||
<result property="projectReqId" column="project_req_id"/>
|
||||
<result property="type" column="type"/>
|
||||
|
|
@ -65,7 +65,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
from pms_product_requirement
|
||||
</sql>
|
||||
|
||||
<select id="selectPmsProductRequirementList" parameterType="PmsProductRequirement" resultMap="PmsProductRequirementResult">
|
||||
<select id="selectPmsProductRequirementList" parameterType="PmsProductRequirement"
|
||||
resultMap="PmsProductRequirementResult">
|
||||
/*keep orderby*/
|
||||
<include refid="selectPmsProductRequirementVo"/>
|
||||
<include refid="selectWhere"/>
|
||||
|
|
@ -78,21 +79,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
|
||||
<sql id="selectWhere">
|
||||
<where>
|
||||
<if test="title != null and title != ''"> and title like concat('%', #{title}, '%')</if>
|
||||
<if test="priorityId != null "> and priority_id = #{priorityId}</if>
|
||||
<if test="pmsProductPlanId != null "> and pms_product_plan_id = #{pmsProductPlanId}</if>
|
||||
<if test="pmsProductIdentifier != null "> and pms_product_identifier = #{pmsProductIdentifier}</if>
|
||||
<if test="content != null and content != ''"> and content = #{content}</if>
|
||||
<if test="title != null and title != ''">and title like concat('%', #{title}, '%')</if>
|
||||
<if test="priorityId != null ">and priority_id = #{priorityId}</if>
|
||||
<if test="pmsProductPlanId != null ">and pms_product_plan_id = #{pmsProductPlanId}</if>
|
||||
<if test="pmsProductIdentifier != null ">and pms_product_identifier = #{pmsProductIdentifier}</if>
|
||||
<if test="content != null and content != ''">and content = #{content}</if>
|
||||
<if test="tagId != null and tagId != ''">and FIND_IN_SET(#{tagId},tag_ids)</if>
|
||||
<if test="createBy != null and createBy != ''"> and create_by = #{createBy}</if>
|
||||
<if test="startTime != null "> and start_time = #{startTime}</if>
|
||||
<if test="endTime != null "> and end_time = #{endTime}</if>
|
||||
<if test="createBy != null and createBy != ''">and create_by = #{createBy}</if>
|
||||
<if test="startTime != null ">and start_time = #{startTime}</if>
|
||||
<if test="endTime != null ">and end_time = #{endTime}</if>
|
||||
<if test="fileIdentifiers != null and fileIdentifiers != ''">and file_identifiers = #{fileIdentifiers}</if>
|
||||
<if test="sort != null "> and sort = #{sort}</if>
|
||||
<if test="sort != null ">and sort = #{sort}</if>
|
||||
<if test="requirementAssigneeGitlinkId != null and requirementAssigneeGitlinkId != ''">
|
||||
and FIND_IN_SET(#{requirementAssigneeGitlinkId},requirement_assignee_gitlink_ids)
|
||||
</if>
|
||||
<if test="pmsProjectId != null and pmsProjectId != ''"> and pms_project_id = #{pmsProjectId}</if>
|
||||
<if test="pmsProjectId != null and pmsProjectId != ''">and pms_project_id = #{pmsProjectId}</if>
|
||||
<if test="productIdentifierList != null">
|
||||
and pms_product_identifier in
|
||||
<foreach item="productIdentifier" collection="productIdentifierList" open="(" separator="," close=")">
|
||||
|
|
@ -118,13 +119,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
|
||||
</where>
|
||||
</sql>
|
||||
|
||||
|
||||
<select id="selectPmsProductRequirementById" parameterType="Long" resultMap="PmsProductRequirementResult">
|
||||
<include refid="selectPmsProductRequirementVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
<select id="selectPmsProductRequirementMaxIndexByProductIdentifier" resultType="java.lang.Long">
|
||||
select max(`index`) from pms_product_requirement where pms_product_identifier = #{pmsProductIdentifier}
|
||||
select max(`index`)
|
||||
from pms_product_requirement
|
||||
where pms_product_identifier = #{pmsProductIdentifier}
|
||||
</select>
|
||||
<select id="selectPmsProductRequirementByProductIdentifierAndIndex" resultMap="PmsProductRequirementResult">
|
||||
<include refid="selectPmsProductRequirementVo"/>
|
||||
|
|
@ -149,12 +152,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
)
|
||||
</if>
|
||||
<if test="pmsProductIdentifier != null ">and pms_product_identifier = #{pmsProductIdentifier}</if>
|
||||
<if test="status != null and status != ''">and `status` = #{status}</if>
|
||||
and (`status`= 'pendingReviewUserReq' or `status`= 'rejectedUserReq' or `status` = 'reviewedUserReq')
|
||||
</where>
|
||||
order by update_time desc
|
||||
</select>
|
||||
<select id="selectReqSpecsList" resultMap="PmsProductRequirementResult">
|
||||
/*keep orderby*/
|
||||
<include refid="selectPmsProductRequirementVo"/>
|
||||
<where>
|
||||
<if test="title != null and title != ''">and title like concat('%', #{title}, '%')</if>
|
||||
<if test="pmsProductIdentifier != null ">and pms_product_identifier = #{pmsProductIdentifier}</if>
|
||||
<if test="status != null and status != ''">and `status` = #{status}</if>
|
||||
<choose>
|
||||
<when test="childrenModuleIdList != null">
|
||||
<if test="childrenModuleIdList != null ">
|
||||
and pms_product_module_id in
|
||||
<foreach item="moduleId" collection="childrenModuleIdList" open="(" separator="," close=")">
|
||||
#{moduleId}
|
||||
</foreach>
|
||||
</if>
|
||||
</when>
|
||||
<otherwise>
|
||||
<if test="pmsProductModuleId != null ">
|
||||
<if test="pmsProductModuleId != 0">and pms_product_module_id = #{pmsProductModuleId}</if>
|
||||
<if test="pmsProductModuleId == 0">and pms_product_module_id is null</if>
|
||||
</if>
|
||||
</otherwise>
|
||||
</choose>
|
||||
and (`status`= 'pendingReviewReqSpecs' or `status`= 'plannedReqSpecs' or `status` = 'rejectedReqSpecs' or
|
||||
`status` = 'reviewedReqSpecs' or `status` = 'completedReqSpecs')
|
||||
</where>
|
||||
order by update_time desc
|
||||
</select>
|
||||
|
||||
<insert id="insertPmsProductRequirement" parameterType="PmsProductRequirement" useGeneratedKeys="true" keyProperty="id">
|
||||
<insert id="insertPmsProductRequirement" parameterType="PmsProductRequirement" useGeneratedKeys="true"
|
||||
keyProperty="id">
|
||||
insert into pms_product_requirement
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="index != null">`index`,</if>
|
||||
|
|
@ -183,7 +216,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="identifier != null and identifier != ''">identifier,</if>
|
||||
<if test="sourceUser != null and sourceUser != ''">source_user,</if>
|
||||
<if test="sourceCompany != null and sourceCompany != ''">source_company,</if>
|
||||
</trim>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="index != null">#{index},</if>
|
||||
<if test="title != null and title != ''">#{title},</if>
|
||||
|
|
@ -211,7 +244,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="identifier != null and identifier != ''">#{identifier},</if>
|
||||
<if test="sourceUser != null and sourceUser != ''">#{sourceUser},</if>
|
||||
<if test="sourceCompany != null and sourceCompany != ''">#{sourceCompany},</if>
|
||||
</trim>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updatePmsProductRequirement" parameterType="PmsProductRequirement">
|
||||
|
|
@ -267,11 +300,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</update>
|
||||
|
||||
<delete id="deletePmsProductRequirementById" parameterType="Long">
|
||||
delete from pms_product_requirement where id = #{id}
|
||||
delete
|
||||
from pms_product_requirement
|
||||
where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deletePmsProductRequirementByIds" parameterType="String">
|
||||
delete from pms_product_requirement where id in
|
||||
delete from pms_product_requirement where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
|
|
|
|||
Loading…
Reference in New Issue