fix(项目管理产品需求重构): 完善产品需求规格逻辑

需求规格变更时需校验附件置空的情况

Signed-off-by: OTTO <731554297@qq.com>
This commit is contained in:
OTTO 2024-12-16 17:18:25 +08:00
parent dbd21d9aa8
commit 9e236c206d
2 changed files with 26 additions and 28 deletions

View File

@ -12,6 +12,7 @@ import lombok.Data;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Objects;
/**
* 产品需求对象 pms_product_requirement
@ -55,7 +56,7 @@ public class ProductReqSpecsChangeVo {
if (StringUtils.isNotEmpty(this.getTitle()) && !this.title.equals(oldPmsProductRequirement.getTitle())) {
return true;
}
return this.getFileIdentifiers() != null && !this.getFileIdentifiers().equals(oldPmsProductRequirement.getFileIdentifiers());
return !Objects.equals(this.getFileIdentifiers(), oldPmsProductRequirement.getFileIdentifiers());
}
public PmsProductRequirement toPmsProductRequirement() {

View File

@ -47,12 +47,11 @@ import static com.microservices.common.httpClient.constant.GitLinkConstants.DATA
/**
* 项目Service业务层处理
*
*
* @author wanjia
*/
@Service
public class PmsProjectServiceImpl implements IPmsProjectService
{
public class PmsProjectServiceImpl implements IPmsProjectService {
@Resource
private PmsProjectMapper pmsProjectMapper;
@ -105,11 +104,10 @@ public class PmsProjectServiceImpl implements IPmsProjectService
* @return 项目
*/
@Override
public PmsProjectDetailVo selectPmsProjectById(Long id)
{
public PmsProjectDetailVo selectPmsProjectById(Long id) {
PmsProject pmsProject = selectAndCheckPmsProjectById(id);
PmsProjectDetailVo pmsProjectDetailVo = new PmsProjectDetailVo();
BeanUtils.copyProperties(pmsProject,pmsProjectDetailVo);
BeanUtils.copyProperties(pmsProject, pmsProjectDetailVo);
pmsProjectDetailVo.setProjectMemberCount(pmsProjectMembersMapper.countMemberByProjectId(pmsProject.getId()));
pmsProjectDetailVo.setProjectRepositoryCount(pmsProjectRepositoryMapper.countRepositoryByProjectId(pmsProject.getId()));
pmsProjectDetailVo.setProjectAssignee(pmsCommonService.getSimpleSysUserByGitlinkUserId(pmsProject.getProjectAssigneeId()));
@ -123,13 +121,12 @@ public class PmsProjectServiceImpl implements IPmsProjectService
/**
* 查询项目列表
*
*
* @param pmsProject 项目
* @return 项目
*/
@Override
public List<PmsProject> selectPmsProjectList(PmsProject pmsProject)
{
public List<PmsProject> selectPmsProjectList(PmsProject pmsProject) {
return pmsProjectMapper.selectPmsProjectList(pmsProject);
}
@ -190,14 +187,13 @@ public class PmsProjectServiceImpl implements IPmsProjectService
/**
* 新增项目
*
*
* @param pmsProjectInputVo 项目
* @return 结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int insertPmsProject(PmsProjectInputVo pmsProjectInputVo)
{
public int insertPmsProject(PmsProjectInputVo pmsProjectInputVo) {
PmsEnterprise pmsEnterprise = pmsEnterpriseService.selectPmsEnterpriseById(pmsProjectInputVo.getPmsEnterpriseId());
PmsUtils.validStartTimeAndEndTime(pmsProjectInputVo.getStartTime(), pmsProjectInputVo.getEndTime());
if (pmsProjectInputVo.getPmsProductId() != null) {
@ -250,14 +246,13 @@ public class PmsProjectServiceImpl implements IPmsProjectService
/**
* 批量删除项目
*
*
* @param ids 需要删除的项目主键
* @return 结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean deletePmsProjectByIds(Long[] ids)
{
public boolean deletePmsProjectByIds(Long[] ids) {
for (Long projectId : ids) {
selectAndCheckPmsProjectById(projectId);
// 删除项目关联仓库
@ -294,19 +289,18 @@ public class PmsProjectServiceImpl implements IPmsProjectService
//同步更新项目-仓库数据
if (pmsProjectUpdateVo.getIsResetRepositoryIdsToNull() != null && pmsProjectUpdateVo.getIsResetRepositoryIdsToNull()) {
pmsProjectRepositoryMapper.deletePmsProjectRepositoryByProjectId(updatedPmsProjectId);
} else
if (StringUtils.isNotEmpty(pmsProjectUpdateVo.getProjectRepositoryIds())) {
List<String> repositoryIdList = Arrays.asList(pmsProjectUpdateVo.getProjectRepositoryIds().split(","));
if (!repositoryIdList.isEmpty()) {
pmsProjectRepositoryMapper.deletePmsProjectRepositoryByProjectId(updatedPmsProjectId);
for (String repoId : repositoryIdList) {
PmsProjectRepository pmsProjectRepository = new PmsProjectRepository();
pmsProjectRepository.setProjectRepositoryId(Long.valueOf(repoId));
pmsProjectRepository.setPmsProjectId(updatedPmsProjectId);
pmsProjectRepositoryService.insertPmsProjectRepository(pmsProjectRepository);
}
} else if (StringUtils.isNotEmpty(pmsProjectUpdateVo.getProjectRepositoryIds())) {
List<String> repositoryIdList = Arrays.asList(pmsProjectUpdateVo.getProjectRepositoryIds().split(","));
if (!repositoryIdList.isEmpty()) {
pmsProjectRepositoryMapper.deletePmsProjectRepositoryByProjectId(updatedPmsProjectId);
for (String repoId : repositoryIdList) {
PmsProjectRepository pmsProjectRepository = new PmsProjectRepository();
pmsProjectRepository.setProjectRepositoryId(Long.valueOf(repoId));
pmsProjectRepository.setPmsProjectId(updatedPmsProjectId);
pmsProjectRepositoryService.insertPmsProjectRepository(pmsProjectRepository);
}
}
}
//同步更新项目-成员数据
if (StringUtils.isNotEmpty(pmsProjectUpdateVo.getPmsProjectMemberIds())) {
@ -314,7 +308,7 @@ public class PmsProjectServiceImpl implements IPmsProjectService
if (!memberIdList.isEmpty()) {
pmsProjectMembersMapper.deletePmsProjectMembersByProjectId(updatedPmsProjectId);
for (String memberId : memberIdList) {
PmsProjectMembers pmsProjectMembers= new PmsProjectMembers();
PmsProjectMembers pmsProjectMembers = new PmsProjectMembers();
pmsProjectMembers.setPmsProjectMemberId(Long.valueOf(memberId));
pmsProjectMembers.setPmsProjectId(updatedPmsProjectId);
pmsProjectMembersService.insertPmsProjectMembersWithoutAuthCheck(pmsProjectMembers);
@ -374,6 +368,9 @@ public class PmsProjectServiceImpl implements IPmsProjectService
*/
@Override
public PmsProject selectAndCheckPmsProjectById(Long id) {
if (id == null) {
throw new ServiceException(HttpStatus.FORBIDDEN, "项目ID不能为空");
}
PmsProject pmsProjectSearch = new PmsProject();
pmsProjectSearch.setId(id);
List<PmsProject> projectList = pmsProjectMapper.selectPmsProjectList(pmsProjectSearch);