1、删除项目时,同时删除项目下关联的需求
This commit is contained in:
@@ -47,4 +47,6 @@ public interface SimulationDemandMapper extends BaseMapper<SimulationDemand> {
|
||||
|
||||
List<SpdmDemandVo> getDemandListWithCondition(@Param("req") DemandQryReq req);
|
||||
|
||||
List<SpdmDemandVo> getDemandListByProjectId(@Param("nodeId") String nodeId);
|
||||
|
||||
}
|
||||
|
||||
@@ -328,6 +328,11 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
return SdmResponse.failed("操作节点失败,原因:删除节点时失败!");
|
||||
}
|
||||
// 删除项目下所有的需求
|
||||
if (!deleteDemand(deleteNodeIdList)) {
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
return SdmResponse.failed("操作节点关联的需求失败,原因:删除节点关联的需求时失败!");
|
||||
}
|
||||
SdmResponse response = deleteDirNew(deleteNodeIdList.get(0));
|
||||
if (ObjectUtils.isEmpty(response) || response.getCode() != ResultCode.SUCCESS.getCode()) {
|
||||
log.error("删除id为{}的节点时,删除文件夹失败,原因为:{}", deleteNodeIdList.get(0),response.getMessage());
|
||||
@@ -338,6 +343,33 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
return SdmResponse.success();
|
||||
}
|
||||
|
||||
private boolean deleteDemand(List<String> deleteNodeIdList) {
|
||||
try {
|
||||
String nodeId = deleteNodeIdList.get(0);
|
||||
// 查询是否是项目类型节点,只有项目类型节点才去删除需求
|
||||
SpdmNodeVo node = nodeMapper.getNodeById(nodeId);
|
||||
if (ObjectUtils.isEmpty(node) || NodeTypeEnum.PROJECT.getValue().equals(node.getNodeType())) {
|
||||
log.info("node为空或不为项目类型,不删除需求,node:{}",node);
|
||||
return true;
|
||||
}
|
||||
log.info("开始删除项目下的需求");
|
||||
List<SpdmDemandVo> demandList = demandMapper.getDemandListByProjectId(nodeId);
|
||||
if (CollectionUtils.isEmpty(demandList)) {
|
||||
log.info("项目:{}下未查询到关联的需求",node.getNodeName());
|
||||
return true;
|
||||
}
|
||||
log.info("共查询到项目:{}下的{}条需求",node.getNodeName(),demandList.size());
|
||||
List<String> demandIdList = demandList.stream().map(SpdmDemandVo::getUuid).toList();
|
||||
demandMapper.deleteDemand(demandIdList);
|
||||
demandMapper.deleteDemandMember(demandIdList);
|
||||
demandMapper.deleteDemandExtra(demandIdList);
|
||||
}catch (Exception ex) {
|
||||
log.error("删除项目下关联的需求时发生异常:{}",ex.getMessage());
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// 删除文件夹
|
||||
public SdmResponse deleteDirNew(String uuid) {
|
||||
DelDirReq req = new DelDirReq();
|
||||
|
||||
@@ -223,4 +223,8 @@
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="getDemandListByProjectId" resultType="com.sdm.project.model.vo.SpdmDemandVo">
|
||||
select * from simulation_demand where project_id = #{nodeId}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user