Merge pull request '产品计划修改为产品里程碑' (#800) from otto/microservices:product_refact into product_refact

This commit is contained in:
otto 2025-01-16 09:26:54 +08:00
commit 6235bb6fe0
24 changed files with 155 additions and 131 deletions

View File

@ -164,7 +164,7 @@ public class ProductReqSpecsController extends BaseController {
value = "【字段说明】(非必填字段不传递则代表不更新传null则代表置空):\n" + value = "【字段说明】(非必填字段不传递则代表不更新传null则代表置空):\n" +
"idList:需求Id列表必填,示例:[1,2,3];\n" + "idList:需求Id列表必填,示例:[1,2,3];\n" +
"pmsProductModuleId:关联产品模块ID;\n" + "pmsProductModuleId:关联产品模块ID;\n" +
"pmsProductPlanId:关联产品计划ID;\n") "pmsProductPlanId:关联产品里程碑ID;\n")
@RequestBody JSONObject pmsProductRequirementBatchUpdateVo) { @RequestBody JSONObject pmsProductRequirementBatchUpdateVo) {
return toAjax(pmsProductRequirementService.batchUpdatePmsProductRequirement(pmsProductRequirementBatchUpdateVo)); return toAjax(pmsProductRequirementService.batchUpdatePmsProductRequirement(pmsProductRequirementBatchUpdateVo));
} }

View File

@ -12,22 +12,26 @@ import lombok.Data;
import java.util.Date; import java.util.Date;
/** /**
* 产品计划对象 pms_product_plan * 产品里程碑对象 pms_product_plan
* *
* @author microservices * @author microservices
* @date 2023-10-10 * @date 2023-10-10
*/ */
@Data @Data
@ApiModel("产品计划对象") @ApiModel("产品里程碑对象")
public class PmsProductPlan extends BaseEntity public class PmsProductPlan extends BaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 产品计划ID */ /**
* 产品里程碑ID
*/
private Long id; private Long id;
/** 计划标题 */ /**
@ApiModelProperty(value = "计划标题") * 里程碑标题
*/
@ApiModelProperty(value = "里程碑标题")
private String planTitle; private String planTitle;
/** 关联产品标识 */ /** 关联产品标识 */
@ -52,8 +56,10 @@ public class PmsProductPlan extends BaseEntity
@ApiModelProperty(value = "结束时间") @ApiModelProperty(value = "结束时间")
private Date endTime; private Date endTime;
/** 计划描述 */ /**
@ApiModelProperty(value = "计划描述") * 里程碑描述
*/
@ApiModelProperty(value = "里程碑描述")
private String planDescription; private String planDescription;
/** 工作量 */ /** 工作量 */

View File

@ -26,8 +26,10 @@ public class PmsProductPriority extends BaseEntity
@ApiModelProperty(value = "优先级名称") @ApiModelProperty(value = "优先级名称")
private String name; private String name;
/** 优先级类型1产品计划 2产品需求 */ /**
@ApiModelProperty(value = "优先级类型1=产品计划,2=产品需求)") * 优先级类型1产品里程碑 2产品需求
*/
@ApiModelProperty(value = "优先级类型1=产品里程碑,2=产品需求)")
private Integer type; private Integer type;
/** 删除标志0代表存在 2代表删除 */ /** 删除标志0代表存在 2代表删除 */

View File

@ -51,7 +51,9 @@ public class PmsProductRequirement extends BaseEntity
@ApiModelProperty(value = "关联产品模块ID") @ApiModelProperty(value = "关联产品模块ID")
private Long pmsProductModuleId; private Long pmsProductModuleId;
/** 关联产品计划ID */ /**
* 关联产品里程碑ID
*/
@ApiModelProperty(value = "关联产品里程碑ID") @ApiModelProperty(value = "关联产品里程碑ID")
private Long pmsProductPlanId; private Long pmsProductPlanId;

View File

@ -26,8 +26,10 @@ public class PmsProductStatus extends BaseEntity
@ApiModelProperty(value = "状态名称") @ApiModelProperty(value = "状态名称")
private String name; private String name;
/** 状态类型1产品计划 2产品需求 */ /**
@ApiModelProperty(value = "状态类型1=产品计划,2=产品需求)") * 状态类型1产品里程碑 2产品需求
*/
@ApiModelProperty(value = "状态类型1=产品里程碑,2=产品需求)")
private Integer type; private Integer type;
/** 删除标志0代表存在 2代表删除 */ /** 删除标志0代表存在 2代表删除 */

View File

@ -9,16 +9,18 @@ import lombok.Data;
import java.util.Date; import java.util.Date;
/** /**
* 产品计划对象 pms_product_plan * 产品里程碑对象 pms_product_plan
* *
* @author microservices * @author microservices
* @date 2023-10-10 * @date 2023-10-10
*/ */
@Data @Data
@ApiModel("产品计划数据对象") @ApiModel("产品里程碑数据对象")
public class PmsProductPlanDataVo public class PmsProductPlanDataVo
{ {
/** 产品计划ID */ /**
* 产品里程碑ID
*/
private Long id; private Long id;
/** 计划标题 */ /** 计划标题 */

View File

@ -13,13 +13,13 @@ import javax.validation.constraints.Size;
import java.util.Date; import java.util.Date;
/** /**
* 产品计划对象 pms_product_plan * 产品里程碑对象 pms_product_plan
* *
* @author microservices * @author microservices
* @date 2023-10-10 * @date 2023-10-10
*/ */
@Data @Data
@ApiModel("产品计划输入对象") @ApiModel("产品里程碑输入对象")
public class PmsProductPlanInputVo public class PmsProductPlanInputVo
{ {

View File

@ -9,13 +9,13 @@ import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
/** /**
* 产品计划对象 pms_product_plan * 产品里程碑对象 pms_product_plan
* *
* @author microservices * @author microservices
* @date 2023-10-10 * @date 2023-10-10
*/ */
@Data @Data
@ApiModel("产品计划搜索对象") @ApiModel("产品里程碑搜索对象")
public class PmsProductPlanSearchVo public class PmsProductPlanSearchVo
{ {

View File

@ -12,18 +12,20 @@ import javax.validation.constraints.Size;
import java.util.Date; import java.util.Date;
/** /**
* 产品计划对象 pms_product_plan * 产品里程碑对象 pms_product_plan
* *
* @author microservices * @author microservices
* @date 2023-10-10 * @date 2023-10-10
*/ */
@Data @Data
@ApiModel("产品计划更新对象") @ApiModel("产品里程碑更新对象")
public class PmsProductPlanUpdateVo public class PmsProductPlanUpdateVo
{ {
/** 产品计划ID */ /**
* 产品里程碑ID
*/
@NotNull @NotNull
@ApiModelProperty(value = "产品计划ID") @ApiModelProperty(value = "产品里程碑ID")
private Long id; private Long id;
/** 计划标题 */ /** 计划标题 */

View File

@ -34,8 +34,10 @@ public class PmsProductRequirementBatchUpdateVo
private Long pmsProductModuleId; private Long pmsProductModuleId;
private Boolean pmsProductModuleIdIsChange = false; private Boolean pmsProductModuleIdIsChange = false;
/** 关联产品计划ID */ /**
@ApiModelProperty(value = "关联产品计划ID") * 关联产品里程碑ID
*/
@ApiModelProperty(value = "关联产品里程碑ID")
private Long pmsProductPlanId; private Long pmsProductPlanId;
private Boolean pmsProductPlanIdIsChange = false; private Boolean pmsProductPlanIdIsChange = false;

View File

@ -54,9 +54,9 @@ public class PmsProductRequirementDataVo extends BaseEntityVo
private PmsProduct pmsProduct; private PmsProduct pmsProduct;
/** /**
* 关联产品计划 * 关联产品里程碑
*/ */
@ApiModelProperty(value = "关联产品计划") @ApiModelProperty(value = "关联产品里程碑")
private PmsProductPlan pmsProductPlan; private PmsProductPlan pmsProductPlan;
/** 标记名称,使用逗号分割的字符 */ /** 标记名称,使用逗号分割的字符 */

View File

@ -29,8 +29,8 @@ public class PmsProductRequirementDetailVo extends PmsProductRequirementDataVo
private List<SysFileInfo> fileList; private List<SysFileInfo> fileList;
/** /**
* 关联产品计划 * 关联产品里程碑
*/ */
@ApiModelProperty(value = "关联产品计划") @ApiModelProperty(value = "关联产品里程碑")
private PmsProductPlan pmsProductPlan; private PmsProductPlan pmsProductPlan;
} }

View File

@ -78,8 +78,10 @@ public class PmsProductRequirementInputVo
@ApiModelProperty(value = "关联项目ID") @ApiModelProperty(value = "关联项目ID")
private Long pmsProjectId; private Long pmsProjectId;
/** 关联产品计划ID */ /**
@ApiModelProperty(value = "关联产品计划ID") * 关联产品里程碑ID
*/
@ApiModelProperty(value = "关联产品里程碑ID")
private Long pmsProductPlanId; private Long pmsProductPlanId;
public PmsProductRequirement toPmsProductRequirement(){ public PmsProductRequirement toPmsProductRequirement(){

View File

@ -26,8 +26,10 @@ public class PmsProductRequirementSearchVo
@ApiModelProperty(value = "关联产品模块ID传0查询不属于任何模块的需求") @ApiModelProperty(value = "关联产品模块ID传0查询不属于任何模块的需求")
private Long pmsProductModuleId; private Long pmsProductModuleId;
/** 关联产品计划ID */ /**
@ApiModelProperty(value = "关联产品计划ID") * 关联产品里程碑ID
*/
@ApiModelProperty(value = "关联产品里程碑ID")
private Long pmsProductPlanId; private Long pmsProductPlanId;
/** 关联产品模块标识 */ /** 关联产品模块标识 */

View File

@ -38,8 +38,10 @@ public class PmsProductRequirementUpdateVo
@ApiModelProperty(value = "关联产品模块ID") @ApiModelProperty(value = "关联产品模块ID")
private Long pmsProductModuleId; private Long pmsProductModuleId;
/** 关联产品计划ID */ /**
@ApiModelProperty(value = "关联产品计划ID") * 关联产品里程碑ID
*/
@ApiModelProperty(value = "关联产品里程碑ID")
private Long pmsProductPlanId; private Long pmsProductPlanId;
/** 正文 */ /** 正文 */

View File

@ -18,7 +18,7 @@ public class PmsTypeDataVo
@ApiModelProperty(value = "名称") @ApiModelProperty(value = "名称")
private String name; private String name;
/** 类型 */ /** 类型 */
@ApiModelProperty(value = "类型1=产品计划2=产品需求)") @ApiModelProperty(value = "类型1=产品里程碑2=产品需求)")
private Integer type; private Integer type;
/** 颜色 */ /** 颜色 */

View File

@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull;
public class PmsTypeSearchVo public class PmsTypeSearchVo
{ {
/** 类型 */ /** 类型 */
@ApiModelProperty(value = "类型1=产品计划2=产品需求)") @ApiModelProperty(value = "类型1=产品里程碑2=产品需求)")
@NotNull @NotNull
private Integer type; private Integer type;

View File

@ -9,7 +9,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
/** /**
* 产品计划Mapper接口 * 产品里程碑Mapper接口
* *
* @author microservices * @author microservices
* @date 2023-10-10 * @date 2023-10-10
@ -18,47 +18,47 @@ import java.util.List;
public interface PmsProductPlanMapper public interface PmsProductPlanMapper
{ {
/** /**
* 查询产品计划 * 查询产品里程碑
* *
* @param id 产品计划主键 * @param id 产品里程碑主键
* @return 产品计划 * @return 产品里程碑
*/ */
public PmsProductPlan selectPmsProductPlanById(Long id); public PmsProductPlan selectPmsProductPlanById(Long id);
/** /**
* 查询产品计划列表 * 查询产品里程碑列表
* *
* @param pmsProductPlan 产品计划 * @param pmsProductPlan 产品里程碑
* @return 产品计划集合 * @return 产品里程碑集合
*/ */
public List<PmsProductPlan> selectPmsProductPlanList(PmsProductPlan pmsProductPlan); public List<PmsProductPlan> selectPmsProductPlanList(PmsProductPlan pmsProductPlan);
/** /**
* 新增产品计划 * 新增产品里程碑
* *
* @param pmsProductPlan 产品计划 * @param pmsProductPlan 产品里程碑
* @return 结果 * @return 结果
*/ */
public int insertPmsProductPlan(PmsProductPlan pmsProductPlan); public int insertPmsProductPlan(PmsProductPlan pmsProductPlan);
/** /**
* 修改产品计划 * 修改产品里程碑
* *
* @param pmsProductPlan 产品计划 * @param pmsProductPlan 产品里程碑
* @return 结果 * @return 结果
*/ */
public int updatePmsProductPlan(PmsProductPlan pmsProductPlan); public int updatePmsProductPlan(PmsProductPlan pmsProductPlan);
/** /**
* 删除产品计划 * 删除产品里程碑
* *
* @param id 产品计划主键 * @param id 产品里程碑主键
* @return 结果 * @return 结果
*/ */
public int deletePmsProductPlanById(Long id); public int deletePmsProductPlanById(Long id);
/** /**
* 批量删除产品计划 * 批量删除产品里程碑
* *
* @param ids 需要删除的数据主键集合 * @param ids 需要删除的数据主键集合
* @return 结果 * @return 结果
@ -66,16 +66,16 @@ public interface PmsProductPlanMapper
public int deletePmsProductPlanByIds(Long[] ids); public int deletePmsProductPlanByIds(Long[] ids);
/** /**
* 查询即将过期的产品计划 * 查询即将过期的产品里程碑
* @param date 时间 * @param date 时间
* @return 产品计划列表 * @return 产品里程碑列表
*/ */
List<PmsProductPlan> selectExpiringPmsProductPlanList(Date date); List<PmsProductPlan> selectExpiringPmsProductPlanList(Date date);
/** /**
* 查询产品计划数量 * 查询产品里程碑数量
* @param pmsProductPlan 产品计划查询条件 * @param pmsProductPlan 产品里程碑查询条件
* @return 产品计划总数 * @return 产品里程碑总数
*/ */
Integer selectPmsProductPlanCount(PmsProductPlan pmsProductPlan); Integer selectPmsProductPlanCount(PmsProductPlan pmsProductPlan);

View File

@ -8,7 +8,7 @@ import com.microservices.pms.product.domain.vo.ReqStatusStatVo;
import java.util.List; import java.util.List;
/** /**
* 产品计划Service接口 * 产品里程碑Service接口
* *
* @author microservices * @author microservices
* @date 2023-10-10 * @date 2023-10-10
@ -16,78 +16,78 @@ import java.util.List;
public interface IPmsProductPlanService public interface IPmsProductPlanService
{ {
/** /**
* 查询产品计划 * 查询产品里程碑
* *
* @param id 产品计划主键 * @param id 产品里程碑主键
* @param checkRole * @param checkRole
* @return 产品计划 * @return 产品里程碑
*/ */
public PmsProductPlan selectPmsProductPlanById(Long id, boolean checkRole); public PmsProductPlan selectPmsProductPlanById(Long id, boolean checkRole);
/** /**
* 查询产品计划列表 * 查询产品里程碑列表
* *
* @param pmsProductPlan 产品计划 * @param pmsProductPlan 产品里程碑
* @return 产品计划集合 * @return 产品里程碑集合
*/ */
public GenericsTableDataInfo<PmsProductPlanDataVo> selectPmsProductPlanList(PmsProductPlan pmsProductPlan); public GenericsTableDataInfo<PmsProductPlanDataVo> selectPmsProductPlanList(PmsProductPlan pmsProductPlan);
/** /**
* 新增产品计划 * 新增产品里程碑
* *
* @param pmsProductPlan 产品计划 * @param pmsProductPlan 产品里程碑
* @return 结果 * @return 结果
*/ */
public Long insertPmsProductPlan(PmsProductPlan pmsProductPlan); public Long insertPmsProductPlan(PmsProductPlan pmsProductPlan);
/** /**
* 修改产品计划 * 修改产品里程碑
* *
* @param pmsProductPlan 产品计划 * @param pmsProductPlan 产品里程碑
* @return 结果 * @return 结果
*/ */
public int updatePmsProductPlan(PmsProductPlan pmsProductPlan); public int updatePmsProductPlan(PmsProductPlan pmsProductPlan);
/** /**
* 更新产品计划变更 * 更新产品里程碑变更
* *
* @param id 产品计划Id * @param id 产品里程碑Id
* @return 结果 * @return 结果
*/ */
public int updatePmsProductPlanChange(Long id); public int updatePmsProductPlanChange(Long id);
/** /**
* 批量删除产品计划 * 批量删除产品里程碑
* *
* @param ids 需要删除的产品计划主键集合 * @param ids 需要删除的产品里程碑主键集合
* @return 结果 * @return 结果
*/ */
public int deletePmsProductPlanByIds(Long[] ids); public int deletePmsProductPlanByIds(Long[] ids);
/** /**
* 删除产品计划信息 * 删除产品里程碑信息
* *
* @param id 产品计划主键 * @param id 产品里程碑主键
* @return 结果 * @return 结果
*/ */
public int deletePmsProductPlanById(Long id); public int deletePmsProductPlanById(Long id);
/** /**
* 查询产品计划详情 * 查询产品里程碑详情
* @param id 产品计划id * @param id 产品里程碑id
* @return 产品计划详情 * @return 产品里程碑详情
*/ */
PmsProductPlanDataVo selectPmsProductPlanDataById(Long id); PmsProductPlanDataVo selectPmsProductPlanDataById(Long id);
/** /**
* 查询产品计划数量 * 查询产品里程碑数量
* @param pmsProductPlan 产品计划查询条件 * @param pmsProductPlan 产品里程碑查询条件
* @return 产品计划总数 * @return 产品里程碑总数
*/ */
Integer selectPmsProductPlanCount(PmsProductPlan pmsProductPlan); Integer selectPmsProductPlanCount(PmsProductPlan pmsProductPlan);
/** /**
* 删除产品下所有产品计划 * 删除产品下所有产品里程碑
* *
* @param productIdentifier 产品标识 * @param productIdentifier 产品标识
*/ */

View File

@ -23,7 +23,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
/** /**
* 产品计划Service业务层处理 * 产品里程碑Service业务层处理
* *
* @author microservices * @author microservices
* @date 2023-10-10 * @date 2023-10-10
@ -43,17 +43,17 @@ public class PmsProductPlanServiceImpl implements IPmsProductPlanService {
private IPmsProductRequirementService pmsProductRequirementService; private IPmsProductRequirementService pmsProductRequirementService;
/** /**
* 查询产品计划 * 查询产品里程碑
* *
* @param id 产品计划主键 * @param id 产品里程碑主键
* @param checkRole 是否校验角色仅允许组织管理员和产品负责人操作当前产品 * @param checkRole 是否校验角色仅允许组织管理员和产品负责人操作当前产品
* @return 产品计划 * @return 产品里程碑
*/ */
@Override @Override
public PmsProductPlan selectPmsProductPlanById(Long id, boolean checkRole) { public PmsProductPlan selectPmsProductPlanById(Long id, boolean checkRole) {
PmsProductPlan pmsProductPlan = pmsProductPlanMapper.selectPmsProductPlanById(id); PmsProductPlan pmsProductPlan = pmsProductPlanMapper.selectPmsProductPlanById(id);
if (pmsProductPlan == null) { if (pmsProductPlan == null) {
throw new ServiceException("该产品计划不存在(产品计划Id[%d])", id); throw new ServiceException("该产品里程碑不存在(产品里程碑Id[%d])", id);
} }
PmsProduct pmsProduct = pmsProductService.selectPmsProductByIdentifier(pmsProductPlan.getPmsProductIdentifier()); PmsProduct pmsProduct = pmsProductService.selectPmsProductByIdentifier(pmsProductPlan.getPmsProductIdentifier());
if (checkRole) { if (checkRole) {
@ -63,10 +63,10 @@ public class PmsProductPlanServiceImpl implements IPmsProductPlanService {
} }
/** /**
* 查询产品计划列表 * 查询产品里程碑列表
* *
* @param pmsProductPlan 产品计划 * @param pmsProductPlan 产品里程碑
* @return 产品计划 * @return 产品里程碑
*/ */
@Override @Override
public GenericsTableDataInfo<PmsProductPlanDataVo> selectPmsProductPlanList(PmsProductPlan pmsProductPlan) { public GenericsTableDataInfo<PmsProductPlanDataVo> selectPmsProductPlanList(PmsProductPlan pmsProductPlan) {
@ -78,9 +78,9 @@ public class PmsProductPlanServiceImpl implements IPmsProductPlanService {
} }
/** /**
* 新增产品计划 * 新增产品里程碑
* *
* @param pmsProductPlan 产品计划 * @param pmsProductPlan 产品里程碑
* @return 结果 * @return 结果
*/ */
@Override @Override
@ -88,15 +88,15 @@ public class PmsProductPlanServiceImpl implements IPmsProductPlanService {
// 校验产品是否存在 // 校验产品是否存在
PmsProduct pmsProduct = pmsProductService.selectPmsProductByIdentifier(pmsProductPlan.getPmsProductIdentifier()); PmsProduct pmsProduct = pmsProductService.selectPmsProductByIdentifier(pmsProductPlan.getPmsProductIdentifier());
pmsProductService.checkManageRole(pmsProduct); pmsProductService.checkManageRole(pmsProduct);
// 设置产品计划优先级若未传入则设置为默认优先级 // 设置产品里程碑优先级若未传入则设置为默认优先级
Long priorityId = Long priorityId =
pmsProductPriorityService.selectPmsProductPriorityIdByInputId(pmsProductPlan.getPriorityId(), PmsConstants.PRODUCT_STATUS_OR_PRIORITY_PLAN_TYPE); pmsProductPriorityService.selectPmsProductPriorityIdByInputId(pmsProductPlan.getPriorityId(), PmsConstants.PRODUCT_STATUS_OR_PRIORITY_PLAN_TYPE);
pmsProductPlan.setPriorityId(priorityId); pmsProductPlan.setPriorityId(priorityId);
checkProductPlan(pmsProductPlan); checkProductPlan(pmsProductPlan);
if (pmsProductPlan.getStartTime() == null || pmsProductPlan.getEndTime() == null) { if (pmsProductPlan.getStartTime() == null || pmsProductPlan.getEndTime() == null) {
throw new ServiceException("产品计划的开始时间和结束时间不能为空"); throw new ServiceException("产品里程碑的开始时间和结束时间不能为空");
} }
// 设置产品计划状态 // 设置产品里程碑状态
Long statusId = Long statusId =
pmsProductStatusService.selectPmsProductPlanStatusByDateOrStatusId(pmsProductPlan.getStartTime(), pmsProductPlan.getEndTime(), null, null, pmsProductPlan.getStatusId(), null); pmsProductStatusService.selectPmsProductPlanStatusByDateOrStatusId(pmsProductPlan.getStartTime(), pmsProductPlan.getEndTime(), null, null, pmsProductPlan.getStatusId(), null);
pmsProductPlan.setStatusId(statusId); pmsProductPlan.setStatusId(statusId);
@ -122,17 +122,17 @@ public class PmsProductPlanServiceImpl implements IPmsProductPlanService {
} }
/** /**
* 修改产品计划 * 修改产品里程碑
* *
* @param pmsProductPlan 产品计划 * @param pmsProductPlan 产品里程碑
* @return 结果 * @return 结果
*/ */
@Override @Override
public int updatePmsProductPlan(PmsProductPlan pmsProductPlan) { public int updatePmsProductPlan(PmsProductPlan pmsProductPlan) {
// 通过id检查需修改的产品计划是否存在 // 通过id检查需修改的产品里程碑是否存在
PmsProductPlan oldPmsProductPlan = selectPmsProductPlanById(pmsProductPlan.getId(), true); PmsProductPlan oldPmsProductPlan = selectPmsProductPlanById(pmsProductPlan.getId(), true);
if (pmsProductPlan.getPriorityId() != null) { if (pmsProductPlan.getPriorityId() != null) {
// 设置产品计划优先级 // 设置产品里程碑优先级
Long priorityId = Long priorityId =
pmsProductPriorityService.selectPmsProductPriorityIdByInputId(pmsProductPlan.getPriorityId(), PmsConstants.PRODUCT_STATUS_OR_PRIORITY_PLAN_TYPE); pmsProductPriorityService.selectPmsProductPriorityIdByInputId(pmsProductPlan.getPriorityId(), PmsConstants.PRODUCT_STATUS_OR_PRIORITY_PLAN_TYPE);
pmsProductPlan.setPriorityId(priorityId); pmsProductPlan.setPriorityId(priorityId);
@ -147,7 +147,7 @@ public class PmsProductPlanServiceImpl implements IPmsProductPlanService {
throw new ServiceException("结束时间不能早于开始时间"); throw new ServiceException("结束时间不能早于开始时间");
} }
} }
// 设置产品计划状态 // 设置产品里程碑状态
Long statusId = Long statusId =
pmsProductStatusService.selectPmsProductPlanStatusByDateOrStatusId( pmsProductStatusService.selectPmsProductPlanStatusByDateOrStatusId(
pmsProductPlan.getStartTime(), pmsProductPlan.getEndTime(), oldPmsProductPlan.getStartTime(), oldPmsProductPlan.getEndTime(), pmsProductPlan.getStatusId(), oldPmsProductPlan.getStatusId()); pmsProductPlan.getStartTime(), pmsProductPlan.getEndTime(), oldPmsProductPlan.getStartTime(), oldPmsProductPlan.getEndTime(), pmsProductPlan.getStatusId(), oldPmsProductPlan.getStatusId());
@ -170,9 +170,9 @@ public class PmsProductPlanServiceImpl implements IPmsProductPlanService {
} }
/** /**
* 批量删除产品计划 * 批量删除产品里程碑
* *
* @param ids 需要删除的产品计划主键 * @param ids 需要删除的产品里程碑主键
* @return 结果 * @return 结果
*/ */
@Override @Override
@ -186,9 +186,9 @@ public class PmsProductPlanServiceImpl implements IPmsProductPlanService {
} }
/** /**
* 删除产品计划信息 * 删除产品里程碑信息
* *
* @param id 产品计划主键 * @param id 产品里程碑主键
* @return 结果 * @return 结果
*/ */
@Override @Override

View File

@ -167,11 +167,11 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
} }
private void checkReqSpecsParameter(PmsProductRequirement pmsProductRequirement, PmsProduct pmsProduct, PmsProductRequirement oldPmsProductRequirement) { private void checkReqSpecsParameter(PmsProductRequirement pmsProductRequirement, PmsProduct pmsProduct, PmsProductRequirement oldPmsProductRequirement) {
// 校验产品计划是否存在 // 校验产品里程碑是否存在
if (pmsProductRequirement.getPmsProductPlanId() != null) { if (pmsProductRequirement.getPmsProductPlanId() != null) {
PmsProductPlan pmsProductPlan = pmsProductPlanService.selectPmsProductPlanById(pmsProductRequirement.getPmsProductPlanId(), false); PmsProductPlan pmsProductPlan = pmsProductPlanService.selectPmsProductPlanById(pmsProductRequirement.getPmsProductPlanId(), false);
if (!pmsProductPlan.getPmsProductIdentifier().equals(pmsProduct.getProductIdentifier())) { if (!pmsProductPlan.getPmsProductIdentifier().equals(pmsProduct.getProductIdentifier())) {
throw new ServiceException("该产品计划不属于当前产品(计划标题[%s],产品名称[%s])", pmsProductPlan.getPlanTitle(), pmsProduct.getProductName()); throw new ServiceException("该产品里程碑不属于当前产品(产品里程碑标题[%s],产品名称[%s])", pmsProductPlan.getPlanTitle(), pmsProduct.getProductName());
} }
if (oldPmsProductRequirement == null || oldPmsProductRequirement.getPmsProductPlanId() == null) { if (oldPmsProductRequirement == null || oldPmsProductRequirement.getPmsProductPlanId() == null) {
@ -410,7 +410,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
, pmsProductRequirement.getPmsProductModuleId()) , pmsProductRequirement.getPmsProductModuleId())
); );
} }
// 设置产品计划 // 设置产品里程碑
if (pmsProductRequirement.getPmsProductPlanId() != null) { if (pmsProductRequirement.getPmsProductPlanId() != null) {
productReqSpecsDataVo.setPmsProductPlan( productReqSpecsDataVo.setPmsProductPlan(
PmsUtils.getSelectObjectInCache( PmsUtils.getSelectObjectInCache(
@ -829,7 +829,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
checkGitlinkUserIds(gitlinkUserIdStrList, pmsProduct); checkGitlinkUserIds(gitlinkUserIdStrList, pmsProduct);
} }
// 校验产品计划是否存在 // 校验产品里程碑是否存在
if (pmsProductRequirementBatchUpdateVo.getPmsProductPlanIdIsChange() if (pmsProductRequirementBatchUpdateVo.getPmsProductPlanIdIsChange()
&& pmsProductRequirementBatchUpdateVo.getPmsProductPlanId() != null) { && pmsProductRequirementBatchUpdateVo.getPmsProductPlanId() != null) {
checkProductPlanId(pmsProductRequirementBatchUpdateVo.getPmsProductPlanId(), pmsProduct); checkProductPlanId(pmsProductRequirementBatchUpdateVo.getPmsProductPlanId(), pmsProduct);
@ -887,7 +887,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
private void checkProductPlanId(Long productPlanId, PmsProduct pmsProduct) { private void checkProductPlanId(Long productPlanId, PmsProduct pmsProduct) {
PmsProductPlan pmsProductPlan = pmsProductPlanService.selectPmsProductPlanById(productPlanId, false); PmsProductPlan pmsProductPlan = pmsProductPlanService.selectPmsProductPlanById(productPlanId, false);
if (!pmsProductPlan.getPmsProductIdentifier().equals(pmsProduct.getProductIdentifier())) { if (!pmsProductPlan.getPmsProductIdentifier().equals(pmsProduct.getProductIdentifier())) {
throw new ServiceException("该产品计划不属于当前产品(计划标题[%s],产品名称[%s])", pmsProductPlan.getPlanTitle(), pmsProduct.getProductName()); throw new ServiceException("该产品里程碑不属于当前产品(计划标题[%s],产品名称[%s])", pmsProductPlan.getPlanTitle(), pmsProduct.getProductName());
} }
} }

View File

@ -135,12 +135,12 @@ public class PmsProductStatusServiceImpl implements IPmsProductStatusService {
if(statusId!=null){ if(statusId!=null){
if (oldStatusId.equals(notStartedStatusId) || oldStatusId.equals(expiredStatusId) || oldStatusId.equals(inProgressStatusId)) { if (oldStatusId.equals(notStartedStatusId) || oldStatusId.equals(expiredStatusId) || oldStatusId.equals(inProgressStatusId)) {
if (!statusId.equals(completedStatusId) && !statusId.equals(closedStatusId)) { if (!statusId.equals(completedStatusId) && !statusId.equals(closedStatusId)) {
throw new ServiceException("产品计划状态仅允许手动切换为已完成"); throw new ServiceException("产品里程碑状态仅允许手动切换为已完成");
} }
} }
if (oldStatusId.equals(completedStatusId) || oldStatusId.equals(closedStatusId)) { if (oldStatusId.equals(completedStatusId) || oldStatusId.equals(closedStatusId)) {
if (!statusId.equals(inProgressStatusId)) { if (!statusId.equals(inProgressStatusId)) {
throw new ServiceException("产品计划状态在已完成状态下仅允许进行重开计划操作"); throw new ServiceException("产品里程碑状态在已完成状态下仅允许进行重开计划操作");
} }
} }
} }

View File

@ -27,9 +27,9 @@ public class PmsJob {
private IPmsProductStatusService pmsProductStatusService; private IPmsProductStatusService pmsProductStatusService;
/** /**
* 每日凌晨检查产品计划 * 每日凌晨检查产品里程碑
* 1未启动的产品计划是否有已达到开始时间的若存在则设置为已过期 * 1未启动的产品里程碑是否有已达到开始时间的若存在则设置为已过期
* 2进行中的产品计划是否有已过期若存在则设置为已过期 * 2进行中的产品里程碑是否有已过期若存在则设置为已过期
*/ */
@Scheduled(cron = "0 0 0 * * ?") @Scheduled(cron = "0 0 0 * * ?")
public void checkProductPlanStatus() { public void checkProductPlanStatus() {
@ -49,7 +49,7 @@ public class PmsJob {
if(!nowZeroTime.before(startZeroTime)){ if(!nowZeroTime.before(startZeroTime)){
pmsProductPlan.setStatusId(inProgressStatusId); pmsProductPlan.setStatusId(inProgressStatusId);
pmsProductPlanMapper.updatePmsProductPlan(pmsProductPlan); pmsProductPlanMapper.updatePmsProductPlan(pmsProductPlan);
log.info("产品计划【{}】状态发生变更:由[未启动]变为[进行中]", pmsProductPlan.getPlanTitle()); log.info("产品里程碑【{}】状态发生变更:由[未启动]变为[进行中]", pmsProductPlan.getPlanTitle());
} }
}); });
// 获取进行中计划列表更新状态 // 获取进行中计划列表更新状态
@ -60,7 +60,7 @@ public class PmsJob {
if(nowZeroTime.after(endZeroTime)){ if(nowZeroTime.after(endZeroTime)){
pmsProductPlan.setStatusId(expiredStatusId); pmsProductPlan.setStatusId(expiredStatusId);
pmsProductPlanMapper.updatePmsProductPlan(pmsProductPlan); pmsProductPlanMapper.updatePmsProductPlan(pmsProductPlan);
log.info("产品计划【{}】状态发生变更:由[进行中]变为[已过期]", pmsProductPlan.getPlanTitle()); log.info("产品里程碑【{}】状态发生变更:由[进行中]变为[已过期]", pmsProductPlan.getPlanTitle());
} }
}); });
} }

View File

@ -14,7 +14,7 @@ public class PmsConstants {
public final static String USER_NOT_IN_ORG_MSG = "组织成员不存在"; public final static String USER_NOT_IN_ORG_MSG = "组织成员不存在";
/** /**
* 状态/优先级产品计划类型 * 状态/优先级产品里程碑类型
*/ */
public final static Integer PRODUCT_STATUS_OR_PRIORITY_PLAN_TYPE = 1; public final static Integer PRODUCT_STATUS_OR_PRIORITY_PLAN_TYPE = 1;
/** /**
@ -22,23 +22,23 @@ public class PmsConstants {
*/ */
public final static Integer PRODUCT_STATUS_OR_PRIORITY_REQUIREMENT_TYPE = 2; public final static Integer PRODUCT_STATUS_OR_PRIORITY_REQUIREMENT_TYPE = 2;
/** /**
* 产品计划状态-未启动 * 产品里程碑状态-未启动
*/ */
public final static String PRODUCT_PLAN_NOT_STARTED_STATUS_NAME = "未启动"; public final static String PRODUCT_PLAN_NOT_STARTED_STATUS_NAME = "未启动";
/** /**
* 产品计划状态-进行中 * 产品里程碑状态-进行中
*/ */
public final static String PRODUCT_PLAN_IN_PROGRESS_STATUS_NAME = "进行中"; public final static String PRODUCT_PLAN_IN_PROGRESS_STATUS_NAME = "进行中";
/** /**
* 产品计划状态-已过期 * 产品里程碑状态-已过期
*/ */
public final static String PRODUCT_PLAN_EXPIRED_STATUS_NAME = "已过期"; public final static String PRODUCT_PLAN_EXPIRED_STATUS_NAME = "已过期";
/** /**
* 产品计划状态-已完成 * 产品里程碑状态-已完成
*/ */
public final static String PRODUCT_PLAN_COMPLETED_STATUS_NAME = "已完成"; public final static String PRODUCT_PLAN_COMPLETED_STATUS_NAME = "已完成";
/** /**
* 产品计划状态-已关闭 * 产品里程碑状态-已关闭
*/ */
public final static String PRODUCT_PLAN_CLOSED_STATUS_NAME = "已关闭"; public final static String PRODUCT_PLAN_CLOSED_STATUS_NAME = "已关闭";
/** /**