@@ -10,11 +10,13 @@ import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.entity.ExportExcelFormat ;
import com.sdm.common.entity.enums.* ;
import com.sdm.common.entity.req.data.* ;
import com.sdm.common.entity.req.project.SimulationPerformance ;
import com.sdm.common.entity.req.system.SendMsgReq ;
import com.sdm.common.entity.req.system.UserQueryReq ;
import com.sdm.common.entity.req.task.TaskTreeExportExcelFormat ;
import com.sdm.common.entity.req.task.TaskTreeExportExcelParam ;
import com.sdm.common.entity.resp.data.FileMetadataInfoResp ;
import com.sdm.common.entity.resp.project.SpdmTaskVo ;
import com.sdm.common.entity.resp.project.TaskNodeExtraPo ;
import com.sdm.common.entity.resp.system.CIDUserResp ;
import com.sdm.common.feign.impl.data.DataClientFeignClientImpl ;
@@ -41,9 +43,11 @@ import com.sdm.project.model.entity.SimulationTaskMember;
import com.sdm.project.model.po.* ;
import com.sdm.project.model.req.* ;
import com.sdm.project.model.vo.SpdmNodeExtraVo ;
import com.sdm.project.model.vo.SpdmNodeMemberVo ;
import com.sdm.project.model.vo.SpdmNodeVo ;
import com.sdm.project.service.IProjectService ;
import com.sdm.project.service.ISimulationPerformanceExtraService ;
import com.sdm.project.service.ISimulationPerformanceService ;
import com.sdm.project.service.ISimulationTaskMemberService ;
import jakarta.servlet.http.HttpServletResponse ;
import lombok.extern.slf4j.Slf4j ;
@@ -91,6 +95,10 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
@Autowired
private ISimulationPerformanceExtraService performanceExtraService ;
@Autowired
private ISimulationPerformanceService performanceService ;
@Autowired
SysUserFeignClientImpl sysUserFeignClient ;
@@ -1839,6 +1847,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
if ( mapper . batchAddSimulationNodeMember ( projectNodeMemberList ) < = 0 ) {
response = SdmResponse . failed ( " 添加节点成员属性失败 " ) ;
}
for ( TaskMemberNode taskMemberNode : projectNodeMemberList ) {
updatePermission ( userId , taskMemberNode . getUuid ( ) ) ;
}
}
if ( CollectionUtils . isNotEmpty ( taskNodeList ) ) {
@@ -1907,6 +1918,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
response = SdmResponse . failed ( " 新增任务成员属性失败 " ) ;
return response ;
}
for ( TaskMemberNode taskMemberNode : taskNodeMemberList ) {
updatePermission ( userId , taskMemberNode . getUuid ( ) ) ;
}
}
if ( CollectionUtils . isNotEmpty ( projectNodePerformanceList ) ) {
projectNodePerformanceList . forEach ( projectNode - > projectNode . setCreateTime ( createTime ) ) ;
@@ -2356,16 +2370,89 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
}
if ( CollectionUtils . isNotEmpty ( deleteNodeList ) ) {
log . info ( " 删除节点参数为:{} " , deleteNodeList ) ;
List < String > nodeIdList = deleteNodeList . stream ( ) . map ( SpdmDeleteProjectDetailReq : : getUuid ) . toList ( ) ;
List < SpdmNodeVo > nodeList = nodeMapper . getNodeListByIds ( nodeId List) ;
Long userId = ThreadLocalContext . getUserId ( ) ;
List < SpdmDeleteProjectDetailReq > nodeList = deleteNodeList . stream ( ) . filter ( node - > NodeTypeEnum . MACHINE . getValue ( ) . equals ( node . getNodeType ( ) ) | | NodeTypeEnum . WORKSPACE . getValue ( ) . equals ( node . getNodeType ( ) ) ) . to List( );
List < SpdmDeleteProjectDetailReq > taskList = deleteNodeList . stream ( ) . filter ( node - > NodeTypeEnum . TASK . getValue ( ) . equals ( node . getNodeType ( ) ) ) . toList ( ) ;
List < SpdmDeleteProjectDetailReq > performanceList = deleteNodeList . stream ( ) . filter ( node - > NodeTypeEnum . PERFORMANCE . getValue ( ) . equals ( node . getNodeType ( ) ) ) . toList ( ) ;
if ( CollectionUtils . isNotEmpty ( nodeList ) ) {
List < Lo ng> user IdList = nodeList . stream ( ) . map ( SpdmNodeVo : : getCreator ) . distinct ( ) . toList ( ) ;
Long user Id = ThreadLocalContext . getUser Id( ) ;
if ( ! userIdList . contains ( userId ) ) {
log . error ( " userIdList为: {}, 当前用户id为: {},无权限删除节点 " , userIdList , userId ) ;
return SdmResponse . fa iled ( " 无权限删除此节点 " ) ;
List < Stri ng> node IdList = nodeList . stream ( ) . map ( SpdmDeleteProjectDetailReq : : getUuid ) . toList ( ) ;
List < SpdmNodeVo > nodeListBy Ids = nodeMapper . getNodeListBy Ids ( nodeIdList ) ;
List < Long > nodeUserIdList = new ArrayList < > ( ) ;
if ( CollectionUtils . isNotEmpty ( nodeListByIds ) ) {
List < Long > creatorUserIdList = nodeListByIds . stream ( ) . filter ( node - > ObjectUtils . isNotEmpty ( node . getCreator ( ) ) ) . map ( SpdmNodeVo : : getCreator ) . toList ( ) ;
if ( CollectionUtils . isNotEmpty ( creatorUserIdList ) ) {
nodeUserIdList . addAll ( creatorUserIdList ) ;
}
}
List < SpdmNodeMemberVo > nodeMemberListByNodeIdList = nodeMapper . getNodeMemberListByNodeIdList ( nodeIdList ) ;
if ( CollectionUtils . isNotEmpty ( nodeMemberListByNodeIdList ) ) {
List < Long > memberUserIdList = nodeMemberListByNodeIdList . stream ( ) . map ( SpdmNodeMemberVo : : getUserId ) . distinct ( ) . toList ( ) ;
if ( CollectionUtils . isNotEmpty ( memberUserIdList ) ) {
nodeUserIdList . addAll ( memberUserIdList ) ;
}
}
if ( CollectionUtils . isNotEmpty ( nodeUserIdList ) ) {
if ( ! nodeUserIdList . contains ( userId ) ) {
log . error ( " nodeUserIdList为: {}, 当前用户id为: {},无权限删除节点 " , nodeUserIdList , userId ) ;
return SdmResponse . failed ( " 无权限删除节点 " ) ;
}
}
}
if ( CollectionUtils . isNotEmpty ( taskList ) ) {
List < String > taskIdList = taskList . stream ( ) . map ( SpdmDeleteProjectDetailReq : : getUuid ) . toList ( ) ;
List < SpdmTaskVo > taskListByIds = taskMapper . getTaskListByIdList ( taskIdList ) ;
List < Long > taskUserIdList = new ArrayList < > ( ) ;
if ( CollectionUtils . isNotEmpty ( taskListByIds ) ) {
List < Long > creatorUserIdList = taskListByIds . stream ( ) . filter ( task - > ObjectUtils . isNotEmpty ( task . getCreator ( ) ) ) . map ( SpdmTaskVo : : getCreator ) . toList ( ) ;
if ( CollectionUtils . isNotEmpty ( creatorUserIdList ) ) {
taskUserIdList . addAll ( creatorUserIdList ) ;
}
}
List < TaskNodeMemberPo > taskMemberListByNodeIdList = nodeMapper . getTaskMemberListByNodeIdList ( taskIdList ) ;
if ( CollectionUtils . isNotEmpty ( taskMemberListByNodeIdList ) ) {
List < Long > memberUserIdList = taskMemberListByNodeIdList . stream ( ) . map ( TaskNodeMemberPo : : getUserId ) . distinct ( ) . toList ( ) ;
if ( CollectionUtils . isNotEmpty ( memberUserIdList ) ) {
taskUserIdList . addAll ( memberUserIdList ) ;
}
}
if ( CollectionUtils . isNotEmpty ( taskUserIdList ) ) {
if ( ! taskUserIdList . contains ( userId ) ) {
log . error ( " taskUserIdList为: {}, 当前用户id为: {},无权限删除任务 " , taskUserIdList , userId ) ;
return SdmResponse . failed ( " 无权限删除任务 " ) ;
}
}
}
if ( CollectionUtils . isNotEmpty ( performanceList ) ) {
List < String > performanceIdList = performanceList . stream ( ) . map ( SpdmDeleteProjectDetailReq : : getUuid ) . toList ( ) ;
List < SimulationPerformance > performances = performanceService . lambdaQuery ( ) . in ( SimulationPerformance : : getUuid , performanceIdList ) . list ( ) ;
if ( CollectionUtils . isNotEmpty ( performances ) ) {
List < String > taskIdList = performances . stream ( ) . filter ( performance - > StringUtils . isNotBlank ( performance . getTaskId ( ) ) ) . map ( SimulationPerformance : : getTaskId ) . toList ( ) ;
List < SpdmTaskVo > taskListByIds = taskMapper . getTaskListByIdList ( taskIdList ) ;
List < Long > performanceUserIdList = new ArrayList < > ( ) ;
if ( CollectionUtils . isNotEmpty ( taskListByIds ) ) {
List < Long > creatorUserIdList = taskListByIds . stream ( ) . filter ( task - > ObjectUtils . isNotEmpty ( task . getCreator ( ) ) ) . map ( SpdmTaskVo : : getCreator ) . toList ( ) ;
if ( CollectionUtils . isNotEmpty ( creatorUserIdList ) ) {
performanceUserIdList . addAll ( creatorUserIdList ) ;
}
}
List < TaskNodeMemberPo > taskMemberListByNodeIdList = nodeMapper . getTaskMemberListByNodeIdList ( taskIdList ) ;
if ( CollectionUtils . isNotEmpty ( taskMemberListByNodeIdList ) ) {
List < Long > memberUserIdList = taskMemberListByNodeIdList . stream ( ) . map ( TaskNodeMemberPo : : getUserId ) . distinct ( ) . toList ( ) ;
if ( CollectionUtils . isNotEmpty ( memberUserIdList ) ) {
performanceUserIdList . addAll ( memberUserIdList ) ;
}
}
if ( CollectionUtils . isNotEmpty ( performanceUserIdList ) ) {
if ( ! performanceUserIdList . contains ( userId ) ) {
log . error ( " performanceUserIdList为: {}, 当前用户id为: {},无权限删除指标 " , performanceUserIdList , userId ) ;
return SdmResponse . failed ( " 无权限删除任务 " ) ;
}
}
}
}
SpdmDeleteProjectReq spdmDeleteProjectReq = new SpdmDeleteProjectReq ( ) ;
spdmDeleteProjectReq . setDeleteNodeList ( deleteNodeList ) ;
SdmResponse response = delete ( spdmDeleteProjectReq ) ;