forked from Gitlink/microservices
feat(项目管理产品需求重构): 完善产品需求规格逻辑
更新需求时不需要检查需求优先级 Signed-off-by: OTTO <731554297@qq.com>
This commit is contained in:
parent
9a4e79098c
commit
ec209cb0e0
|
|
@ -160,7 +160,7 @@ public class PmsCommonAsyncServiceImpl implements IPmsCommonAsyncService {
|
|||
List<String> tagIds = new ArrayList<>(Arrays.asList(tagIdsStr.split(",")));
|
||||
tagIds.remove(tagIdStr);
|
||||
pmsProductRequirement.setTags(String.join(",", tagIds));
|
||||
pmsProductRequirementService.updatePmsProductRequirement(pmsProductRequirement);
|
||||
pmsProductRequirementService.updateRequirement(pmsProductRequirement);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,14 +26,6 @@ public interface IPmsProductRequirementService
|
|||
*/
|
||||
public PmsProductRequirement selectPmsProductRequirementById(Long id, boolean checkRole);
|
||||
|
||||
/**
|
||||
* 修改产品需求
|
||||
*
|
||||
* @param pmsProductRequirement 产品需求
|
||||
* @return 结果
|
||||
*/
|
||||
public int updatePmsProductRequirement(PmsProductRequirement pmsProductRequirement);
|
||||
|
||||
/**
|
||||
* 更新产品需求变更
|
||||
*
|
||||
|
|
@ -142,4 +134,6 @@ public interface IPmsProductRequirementService
|
|||
List<PmsProject> selectReqSpecsProjectList(String productIdentifier);
|
||||
|
||||
int batchUpdatePmsProductRequirement(JSONObject pmsProductRequirementBatchUpdateVo);
|
||||
|
||||
int updateRequirement(PmsProductRequirement pmsProductRequirement);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -201,13 +201,6 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
|
|||
pmsCommonService.getAllFileByFileIdentifiers(pmsProductRequirement.getFileIdentifiers());
|
||||
}
|
||||
|
||||
private int updateRequirement(PmsProductRequirement pmsProductRequirement, String productIdentifier) {
|
||||
pmsProductRequirement.setUpdateBy(SecurityUtils.getUsername());
|
||||
pmsProductRequirement.setUpdateTime(DateUtils.getNowDate());
|
||||
pmsProductService.updatePmsProductChange(productIdentifier);
|
||||
return pmsProductRequirementMapper.updatePmsProductRequirement(pmsProductRequirement);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int deleteUserReqByIds(Long[] ids) {
|
||||
|
|
@ -304,7 +297,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
|
|||
// 记录评审意见
|
||||
pmsProductReqOperationRecordService.insertPmsProductReqOperationRecord(
|
||||
productReqReviewVo.toUserReqRecord(SecurityUtils.getUsername()));
|
||||
return updateRequirement(userReq, userReq.getPmsProductIdentifier());
|
||||
return updateRequirement(userReq);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -370,7 +363,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
|
|||
PmsProductReqOperationRecord pmsProductReqOperationRecord
|
||||
= productReqReviewVo.toReqSpecsRecord(SecurityUtils.getUsername());
|
||||
pmsProductReqOperationRecordService.insertPmsProductReqOperationRecord(pmsProductReqOperationRecord);
|
||||
return updateRequirement(reqSpecs, reqSpecs.getPmsProductIdentifier());
|
||||
return updateRequirement(reqSpecs);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -524,7 +517,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
|
|||
// 已评审或已计划的需规需要进行变更(创建一条对应的需规)
|
||||
// 调整原需规状态
|
||||
oldPmsProductRequirement.setStatus(ProductReqStatus.getToStatus(oldPmsProductRequirement.getStatus()).getKey());
|
||||
updateRequirement(oldPmsProductRequirement, oldPmsProductRequirement.getPmsProductIdentifier());
|
||||
updateRequirement(oldPmsProductRequirement);
|
||||
// 创建变更后的需规
|
||||
PmsProductRequirement changingReqSpecs = oldPmsProductRequirement.toChangeReqSpecs(productReqSpecsChangeVo);
|
||||
if (StringUtils.isNotEmpty(productReqSpecsChangeVo.getTitle())) {
|
||||
|
|
@ -567,7 +560,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
|
|||
reqSpecs.setPmsProjectId(productReqSpecsActivePlanVo.getProjectId());
|
||||
reqSpecs.setProjectReqId(projectIssue.getLong("id"));
|
||||
reqSpecs.setStatus(ProductReqStatus.PLANNED_REQ_SPECS.getKey());
|
||||
int success = updateRequirement(reqSpecs, reqSpecs.getPmsProductIdentifier());
|
||||
int success = updateRequirement(reqSpecs);
|
||||
pmsProductReqOperationRecordService.insertPmsProductReqOperationRecord(
|
||||
productReqSpecsActivePlanVo.toPmsProductReqOperationRecord(reqSpecs)
|
||||
);
|
||||
|
|
@ -615,7 +608,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
|
|||
}
|
||||
}
|
||||
pmsProductRequirement.setStatus(productReqStatus.getKey());
|
||||
updateRequirement(pmsProductRequirement, pmsProductRequirement.getPmsProductIdentifier());
|
||||
updateRequirement(pmsProductRequirement);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -697,96 +690,6 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
|
|||
return productUserReqDetailVo;
|
||||
}
|
||||
|
||||
private void checkPmsProductRequirement(PmsProductRequirement pmsProductRequirement, PmsProduct pmsProduct, PmsProductRequirement oldPmsProductRequirement) {
|
||||
if (StringUtils.isNotBlank(pmsProductRequirement.getRequirementAssigneeGitlinkIds())) {
|
||||
String[] gitlinkUserIdStrList = pmsProductRequirement.getRequirementAssigneeGitlinkIds().split(",");
|
||||
checkGitlinkUserIds(gitlinkUserIdStrList, pmsProduct);
|
||||
}
|
||||
|
||||
// 校验产品计划是否存在
|
||||
if (pmsProductRequirement.getPmsProductPlanId() != null) {
|
||||
PmsProductPlan pmsProductPlan = pmsProductPlanService.selectPmsProductPlanById(pmsProductRequirement.getPmsProductPlanId(), false);
|
||||
if (!pmsProductPlan.getPmsProductIdentifier().equals(pmsProduct.getProductIdentifier())) {
|
||||
throw new ServiceException("该产品计划不属于当前产品(计划标题[%s],产品名称[%s])", pmsProductPlan.getPlanTitle(), pmsProduct.getProductName());
|
||||
}
|
||||
|
||||
if (oldPmsProductRequirement == null || oldPmsProductRequirement.getPmsProductPlanId() == null) {
|
||||
// 当原需求没有计划时,此操作相当于将该需求移入该计划,需要更新计划的更新时间
|
||||
pmsProductPlanService.updatePmsProductPlanChange(pmsProductRequirement.getPmsProductPlanId());
|
||||
} else if (!oldPmsProductRequirement.getPmsProductPlanId().equals(pmsProductRequirement.getPmsProductPlanId())) {
|
||||
// 当原需求有计划且该计划id与原计划id不同时,此操作相当于从原计划移入新计划,需要更新原计划和新计划的更新时间
|
||||
pmsProductPlanService.updatePmsProductPlanChange(pmsProductRequirement.getPmsProductPlanId());
|
||||
pmsProductPlanService.updatePmsProductPlanChange(oldPmsProductRequirement.getPmsProductPlanId());
|
||||
}
|
||||
} else if (oldPmsProductRequirement != null && oldPmsProductRequirement.getPmsProductPlanId() != null) {
|
||||
// 当原需求有计划且当前设置计划为空时,此操作相当于将该需求从原计划中移除,需更新原计划的更新时间
|
||||
pmsProductPlanService.updatePmsProductPlanChange(oldPmsProductRequirement.getPmsProductPlanId());
|
||||
}
|
||||
// 校验项目是否存在
|
||||
if (pmsProductRequirement.getPmsProjectId() != null) {
|
||||
checkProjectId(pmsProductRequirement.getPmsProjectId(), pmsProduct);
|
||||
}
|
||||
|
||||
|
||||
// 校验模块是否存在
|
||||
if (pmsProductRequirement.getPmsProductModuleId() != null) {
|
||||
checkModuleId(pmsProductRequirement.getPmsProductModuleId(), pmsProduct);
|
||||
}
|
||||
|
||||
// 校验标记是否存在
|
||||
pmsProductRequirementTagService.checkTags(pmsProductRequirement.getTags(), PmsConstants.PRODUCT_TAG_AND_MODULE_TYPE, pmsProduct.getPmsEnterpriseId());
|
||||
pmsProductRequirement.setTagIds(pmsProductRequirement.getTags());
|
||||
|
||||
//校验结束时间需大于开始时间
|
||||
if (pmsProductRequirement.getStartTime() != null && pmsProductRequirement.getEndTime() != null) {
|
||||
if (pmsProductRequirement.getStartTime().after(pmsProductRequirement.getEndTime())) {
|
||||
throw new ServiceException("结束时间不能早于开始时间");
|
||||
}
|
||||
}
|
||||
|
||||
// 检查附件列表是否有异常数据
|
||||
pmsCommonService.getAllFileByFileIdentifiers(pmsProductRequirement.getFileIdentifiers());
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改产品需求
|
||||
*
|
||||
* @param pmsProductRequirement 产品需求
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updatePmsProductRequirement(PmsProductRequirement pmsProductRequirement) {
|
||||
// 通过id检查需修改的产品需求是否存在
|
||||
PmsProductRequirement oldPmsProductRequirement = selectPmsProductRequirementById(pmsProductRequirement.getId(), true);
|
||||
pmsProductRequirement.setPmsProductIdentifier(oldPmsProductRequirement.getPmsProductIdentifier());
|
||||
if (pmsProductRequirement.getPriorityId() != null) {
|
||||
// 设置需求优先级
|
||||
Long priorityId =
|
||||
pmsProductPriorityService.selectPmsProductPriorityIdByInputId(pmsProductRequirement.getPriorityId(), PmsConstants.PRODUCT_STATUS_OR_PRIORITY_REQUIREMENT_TYPE);
|
||||
pmsProductRequirement.setPriorityId(priorityId);
|
||||
}
|
||||
|
||||
// 设置需求状态
|
||||
// TODO:需要根据用户需求、需求规格来判断需求状态
|
||||
// pmsProductRequirement.setStatusId(statusId);
|
||||
PmsProduct pmsProduct = pmsProductService.selectPmsProductByIdentifier(oldPmsProductRequirement.getPmsProductIdentifier());
|
||||
checkPmsProductRequirement(pmsProductRequirement, pmsProduct, oldPmsProductRequirement);
|
||||
if (pmsProductRequirement.getStartTime() != null && pmsProductRequirement.getEndTime() == null) {
|
||||
if (oldPmsProductRequirement.getEndTime() != null && pmsProductRequirement.getStartTime().after(oldPmsProductRequirement.getEndTime())) {
|
||||
throw new ServiceException("开始时间不能晚于结束时间");
|
||||
}
|
||||
}
|
||||
if (pmsProductRequirement.getStartTime() == null && pmsProductRequirement.getEndTime() != null) {
|
||||
if (oldPmsProductRequirement.getStartTime() != null && oldPmsProductRequirement.getStartTime().after(pmsProductRequirement.getEndTime())) {
|
||||
throw new ServiceException("结束时间不能早于开始时间");
|
||||
}
|
||||
}
|
||||
pmsProductRequirement.setUpdateBy(SecurityUtils.getUsername());
|
||||
pmsProductRequirement.setUpdateTime(DateUtils.getNowDate());
|
||||
pmsProductService.updatePmsProductChange(oldPmsProductRequirement.getPmsProductIdentifier());
|
||||
return pmsProductRequirementMapper.updatePmsProductRequirement(pmsProductRequirement);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updatePmsProductRequirementChange(Long id) {
|
||||
PmsProductRequirement pmsProductRequirement = selectPmsProductRequirementById(id, false);
|
||||
|
|
@ -854,7 +757,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
|
|||
List<PmsProductRequirement> pmsProductRequirementList = pmsProductRequirementMapper.selectPmsProductRequirementList(pmsProductRequirementSearch);
|
||||
for (PmsProductRequirement pmsProductRequirement : pmsProductRequirementList) {
|
||||
pmsProductRequirement.setPmsProductPlanId(null);
|
||||
updateRequirement(pmsProductRequirement, pmsProductRequirement.getPmsProductIdentifier());
|
||||
updateRequirement(pmsProductRequirement);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -865,7 +768,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
|
|||
List<PmsProductRequirement> pmsProductRequirementList = pmsProductRequirementMapper.selectPmsProductRequirementList(pmsProductRequirementSearch);
|
||||
for (PmsProductRequirement pmsProductRequirement : pmsProductRequirementList) {
|
||||
pmsProductRequirement.setPmsProductModuleId(null);
|
||||
updatePmsProductRequirement(pmsProductRequirement);
|
||||
updateRequirement(pmsProductRequirement);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1016,4 +919,17 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS
|
|||
}
|
||||
return pmsProductRequirementMapper.selectReqCountGroupByStatus(pmsProductIdentifier, statusList);
|
||||
}
|
||||
|
||||
public int updateRequirement(PmsProductRequirement pmsProductRequirement, String productIdentifier) {
|
||||
pmsProductRequirement.setPmsProductIdentifier(productIdentifier);
|
||||
return updateRequirement(pmsProductRequirement);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateRequirement(PmsProductRequirement pmsProductRequirement) {
|
||||
pmsProductRequirement.setUpdateBy(SecurityUtils.getUsername());
|
||||
pmsProductRequirement.setUpdateTime(DateUtils.getNowDate());
|
||||
pmsProductService.updatePmsProductChange(pmsProductRequirement.getPmsProductIdentifier());
|
||||
return pmsProductRequirementMapper.updatePmsProductRequirement(pmsProductRequirement);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue