Merge branch 'main' of http://192.168.65.198:3000/toolchaintechnologycenter/spdm-backend
This commit is contained in:
@@ -71,7 +71,7 @@ public class SimulationNodeController implements ISimulationNodeFeignClient {
|
||||
*/
|
||||
@PostMapping("/list")
|
||||
@Operation(summary = "项目列表", description = "项目列表")
|
||||
public SdmResponse list(SpdmNodeListReq req) {
|
||||
public SdmResponse list(@RequestBody SpdmNodeListReq req) {
|
||||
return nodeService.list(req);
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Mapper
|
||||
public interface SimulationNodeMapper extends BaseMapper<SimulationNode> {
|
||||
@@ -73,7 +74,7 @@ public interface SimulationNodeMapper extends BaseMapper<SimulationNode> {
|
||||
|
||||
List<SpdmNodeVo> getNodeListByIds(@Param("nodeIdList") List<String> nodeIdList);
|
||||
|
||||
List<UserGroupProjectVo> getUserGroupProjectStatistics(@Param("userGroupId") Long userGroupId, @Param("userId") Long userId);
|
||||
List<UserGroupProjectVo> getUserGroupProjectStatistics(@Param("userIds")Set<Long> userIds );
|
||||
|
||||
List<UserGroupTaskCompleteVo> getUserGroupTaskCompleteStatistics(@Param("req") GetUserGroupTaskCompleteStatisticsReq req);
|
||||
|
||||
|
||||
@@ -4,16 +4,17 @@ import com.alibaba.fastjson2.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.common.common.ThreadLocalContext;
|
||||
import com.sdm.common.entity.constants.SystemConstants;
|
||||
import com.sdm.common.entity.enums.DirTypeEnum;
|
||||
import com.sdm.common.entity.enums.NodeTypeEnum;
|
||||
import com.sdm.common.entity.req.data.CreateDirReq;
|
||||
import com.sdm.common.entity.req.project.DelNodeReq;
|
||||
import com.sdm.common.entity.req.project.RenameNodeReq;
|
||||
import com.sdm.common.entity.req.project.SpdmNodeListReq;
|
||||
import com.sdm.common.entity.req.system.QueryGroupDetailReq;
|
||||
import com.sdm.common.entity.req.system.UserQueryReq;
|
||||
import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp;
|
||||
import com.sdm.common.entity.resp.system.CIDUserResp;
|
||||
import com.sdm.common.entity.resp.system.SysUserGroupDetailResp;
|
||||
import com.sdm.common.feign.impl.data.DataClientFeignClientImpl;
|
||||
import com.sdm.common.feign.impl.system.SysUserFeignClientImpl;
|
||||
import com.sdm.common.utils.RandomUtil;
|
||||
@@ -96,9 +97,9 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
for (SpdmProjectNodeEditReq addNode : addNodeList) {
|
||||
// 项目/阶段名称重名校验
|
||||
if (CollectionUtils.isNotEmpty(this.lambdaQuery().eq(SimulationNode::getNodeName, addNode.getNodeName()).list())) {
|
||||
if (SystemConstants.PROJECT_TAG.equals(addNode.getNodeType())) {
|
||||
if (NodeTypeEnum.PROJECT.getValue().equals(addNode.getNodeType())) {
|
||||
return SdmResponse.failed("同名项目已存在,请检查");
|
||||
} else if (SystemConstants.PHASE_TAG.equals(addNode.getNodeType())) {
|
||||
} else if (NodeTypeEnum.PHASE.getValue().equals(addNode.getNodeType())) {
|
||||
return SdmResponse.failed("同名阶段已存在,请检查");
|
||||
}
|
||||
}
|
||||
@@ -205,7 +206,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
List<SpdmNodeMemberVo> spdmNodeMemberVoList = nodeMapper.getNodeMemberListByNodeIdList(nodeIdList);
|
||||
if (CollectionUtils.isNotEmpty(spdmNodeMemberVoList)) {
|
||||
List<Long> usewrIdList = spdmNodeMemberVoList.stream().map(SpdmNodeMemberVo::getUserId).distinct().toList();
|
||||
SdmResponse<List<CIDUserResp>> cidUserResp= sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(usewrIdList).build());
|
||||
SdmResponse<List<CIDUserResp>> cidUserResp = sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(usewrIdList).build());
|
||||
List<CIDUserResp> userList = cidUserResp.getData();
|
||||
|
||||
Map<Long, List<CIDUserResp>> userMap = Map.of();
|
||||
@@ -320,7 +321,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
// 之前的tag
|
||||
// preTag = entry.getKey() = "tag1"
|
||||
String preTag = entry.getKey();
|
||||
log.info("preTag为:{}",preTag);
|
||||
log.info("preTag为:{}", preTag);
|
||||
try {
|
||||
// entry.getValue() = "uuid1,uuid2"
|
||||
setTagProperty(addNode, preTag, entry.getValue());
|
||||
@@ -333,7 +334,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
// 设置 当前节点所属项目根节点uuid
|
||||
// addNode.getPid()为空时,在创建项目,ownRootNodeUuid就是addNode本身uuid
|
||||
// addNode.getPid()不为空时,在创建阶段,ownRootNodeUuid就是入参的pid父节点
|
||||
addNode.setOwnRootNodeUuid(ObjectUtils.isEmpty(addNode.getPid())?addNode.getUuid():addNode.getPid());
|
||||
addNode.setOwnRootNodeUuid(ObjectUtils.isEmpty(addNode.getPid()) ? addNode.getUuid() : addNode.getPid());
|
||||
addNode.setCreateTime(curDateStr);
|
||||
addNode.setCreator(jobNumber);
|
||||
addNode.setTenantId(tenantId);
|
||||
@@ -373,12 +374,11 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
if (nodeMapper.addNodeBatch(addNodeList) <= 0) {
|
||||
return null;
|
||||
}
|
||||
Optional<SpdmProjectNodeEditReq> projectOptional = addNodeList.stream().filter(node -> SystemConstants.PROJECT_TAG.equals(node.getNodeType())).findFirst();
|
||||
Optional<SpdmProjectNodeEditReq> projectOptional = addNodeList.stream().filter(node -> NodeTypeEnum.PROJECT.getValue().equals(node.getNodeType())).findFirst();
|
||||
if (projectOptional.isPresent()) {
|
||||
SpdmProjectNodeEditReq projectNode = projectOptional.get();
|
||||
String uuid = projectNode.getUuid();
|
||||
// 创建项目节点的文件夹
|
||||
createDir(uuid, NodeTypeEnum.NODE.getValue() , null, projectNode.getNodeName());
|
||||
createDir(projectNode.getUuid(), projectNode.getNodeType(), null, projectNode.getNodeName());
|
||||
} else {
|
||||
List<ProjectNodePo> projectNodePoList = mapper.queryNodeListByNodeId(addNodeList.get(0).getPid());
|
||||
if (CollectionUtils.isEmpty(projectNodePoList)) {
|
||||
@@ -388,7 +388,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
ProjectNodePo projectNodePo = projectNodePoList.get(0);
|
||||
String projectUuid = projectNodePo.getUuid();
|
||||
for (SpdmProjectNodeEditReq node : addNodeList) {
|
||||
createDir(node.getUuid(),NodeTypeEnum.NODE.getValue() , projectUuid, node.getNodeName());
|
||||
createDir(node.getUuid(), node.getNodeType(), projectUuid, node.getNodeName());
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(allNodeManagerList) && nodeMapper.addNodeMemberBatch(allNodeManagerList) <= 0) {
|
||||
@@ -477,7 +477,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
List<SpdmNodeMemberVo> spdmNodeMemberVoList = nodeMapper.getNodeMemberListByNodeIdList(Collections.singletonList(projectNode.getUuid()));
|
||||
if (CollectionUtils.isNotEmpty(spdmNodeMemberVoList)) {
|
||||
List<Long> usewrIdList = spdmNodeMemberVoList.stream().map(SpdmNodeMemberVo::getUserId).distinct().toList();
|
||||
SdmResponse<List<CIDUserResp>> cidUserResp= sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(usewrIdList).build());
|
||||
SdmResponse<List<CIDUserResp>> cidUserResp = sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(usewrIdList).build());
|
||||
List<CIDUserResp> userList = cidUserResp.getData();
|
||||
|
||||
Map<Long, List<CIDUserResp>> userMap = Map.of();
|
||||
@@ -564,7 +564,8 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
log.error("allNodeIdList:{},未查询到团队成员", allNodeIdList);
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
List<Long> userIdList = spdmNodeMemberVoList.stream().map(SpdmNodeMemberVo::getUserId).distinct().collect(Collectors.toList());;
|
||||
List<Long> userIdList = spdmNodeMemberVoList.stream().map(SpdmNodeMemberVo::getUserId).distinct().collect(Collectors.toList());
|
||||
;
|
||||
|
||||
// 查询node节点下的task的成员(仿真负责人和执行人)
|
||||
List<SimulationTask> taskList = simulationTaskService.lambdaQuery().in(SimulationTask::getNodeId, allNodeIdList).list();
|
||||
@@ -574,7 +575,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
userIdList.addAll(taskMemberList.stream().map(SimulationTaskMember::getUserId).distinct().toList());
|
||||
}
|
||||
}
|
||||
SdmResponse<List<CIDUserResp>> cidUserResp= sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(userIdList).build());
|
||||
SdmResponse<List<CIDUserResp>> cidUserResp = sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(userIdList).build());
|
||||
List<CIDUserResp> userList = cidUserResp.getData();
|
||||
|
||||
if (CollectionUtils.isEmpty(userList)) {
|
||||
@@ -615,10 +616,10 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
/**
|
||||
* 创建文件夹
|
||||
*
|
||||
* @param uuid 待创建节点uuid
|
||||
* @param uuid 待创建节点uuid
|
||||
* @param uuidOwnType 待创建节点类型:node,task,run,performance
|
||||
* @param parentUuid 父节点uuid
|
||||
* @param dirName 待长江文件夹名称
|
||||
* @param parentUuid 父节点uuid
|
||||
* @param dirName 待长江文件夹名称
|
||||
*/
|
||||
private void createDir(String uuid, String uuidOwnType, String parentUuid, String dirName) {
|
||||
CreateDirReq createDirReq = new CreateDirReq();
|
||||
@@ -639,7 +640,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
List<AllNodeByProjectIdAndTypeResp> allNodeByProjectIdAndTypeRespList = new ArrayList<>();
|
||||
List<SimulationNode> nodeList = this.lambdaQuery()
|
||||
.eq(ObjectUtils.isNotEmpty(nodeId), SimulationNode::getId, nodeId)
|
||||
.eq(ObjectUtils.isNotEmpty(nodeType),SimulationNode::getNodeType, nodeType)
|
||||
.eq(ObjectUtils.isNotEmpty(nodeType), SimulationNode::getNodeType, nodeType)
|
||||
.list();
|
||||
if (CollectionUtils.isEmpty(nodeList)) {
|
||||
return SdmResponse.failed("未找到节点");
|
||||
@@ -703,23 +704,40 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
|
||||
@Override
|
||||
public SdmResponse getUserGroupProjectStatistics(Long userGroupId, Long userId) {
|
||||
List<UserGroupProjectVo> userGroupProjectStatistics = this.baseMapper.getUserGroupProjectStatistics(userGroupId, userId);
|
||||
if(CollectionUtils.isEmpty(userGroupProjectStatistics)) {
|
||||
QueryGroupDetailReq req = new QueryGroupDetailReq();
|
||||
req.setCurrent(1);
|
||||
req.setSize(1000);
|
||||
req.setId(userGroupId);
|
||||
req.setTenantId(ThreadLocalContext.getTenantId());
|
||||
SdmResponse<SysUserGroupDetailResp> sysUserGroupDetailRespSdmResponse = sysUserFeignClient.queryGroupDetail(req);
|
||||
if (!sysUserGroupDetailRespSdmResponse.isSuccess()
|
||||
|| ObjectUtils.isEmpty(sysUserGroupDetailRespSdmResponse.getData())
|
||||
|| ObjectUtils.isEmpty(sysUserGroupDetailRespSdmResponse.getData().getUsers())
|
||||
|| ObjectUtils.isEmpty(sysUserGroupDetailRespSdmResponse.getData().getUsers().getData())) {
|
||||
return SdmResponse.success();
|
||||
}
|
||||
Map<Long, String> userId2Nickname = sysUserGroupDetailRespSdmResponse.getData().getUsers().getData().stream().collect(Collectors.toMap(CIDUserResp::getUserId, CIDUserResp::getNickname));
|
||||
|
||||
|
||||
Set<Long> userIds = new HashSet<>();
|
||||
if (ObjectUtils.isEmpty(userId)) {
|
||||
userIds = userId2Nickname.keySet();
|
||||
}else {
|
||||
userIds.add(userId);
|
||||
}
|
||||
|
||||
|
||||
List<UserGroupProjectVo> userGroupProjectStatistics = this.baseMapper.getUserGroupProjectStatistics(userIds);
|
||||
if (CollectionUtils.isEmpty(userGroupProjectStatistics)) {
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
|
||||
// 按用户ID统计项目数量
|
||||
Map<Long, Integer> userProjectCountMap = new HashMap<>();
|
||||
// 存储每个用户的详细信息,使用LinkedHashMap保持插入顺序
|
||||
Map<Long, UserGroupProjectVo> userId2UserGroupProjectVo = new LinkedHashMap<>();
|
||||
|
||||
for (UserGroupProjectVo vo : userGroupProjectStatistics) {
|
||||
Long userIdKey = vo.getUserId();
|
||||
userProjectCountMap.put(userIdKey, userProjectCountMap.getOrDefault(userIdKey, 0) + 1);
|
||||
// 只保存第一个遇到的用户信息,或者可以考虑保存最新的
|
||||
if (!userId2UserGroupProjectVo.containsKey(userIdKey)) {
|
||||
userId2UserGroupProjectVo.put(userIdKey, vo);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 转换为List<Map<String, Object>>格式,便于前端展示
|
||||
@@ -728,7 +746,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
for (Map.Entry<Long, Integer> entry : userProjectCountMap.entrySet()) {
|
||||
Map<String, Object> item = new HashMap<>();
|
||||
item.put("userId", entry.getKey());
|
||||
item.put("userName", userId2UserGroupProjectVo.get(entry.getKey()).getNickname());
|
||||
item.put("userName", userId2Nickname.get(entry.getKey()));
|
||||
item.put("projectCount", entry.getValue());
|
||||
userResult.add(item);
|
||||
}
|
||||
@@ -795,7 +813,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
userStat.setUserId(userId);
|
||||
userStat.setUserName(item.getNickname());
|
||||
|
||||
Map<Float, Integer> statusCount = userStat.getDifficultyCount();
|
||||
Map<Float, Integer> statusCount = userStat.getDifficultyCount();
|
||||
if (statusCount == null) {
|
||||
statusCount = new HashMap<>();
|
||||
userStat.setDifficultyCount(statusCount);
|
||||
@@ -823,7 +841,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
if ("task".equals(req.getQueryType())) {
|
||||
// 处理任务完成情况统计
|
||||
List<CommonGetCompleteFromTaskVo> commonCompleteStatisticsFromTask = this.baseMapper.getCommonCompleteStatisticsFromTask(req);
|
||||
|
||||
|
||||
// 按tag分组统计任务状态
|
||||
Map<String, CommonStatisticsVo> taskStatisticsMap = new HashMap<>();
|
||||
|
||||
@@ -855,7 +873,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
} else if ("performance".equals(req.getQueryType())) {
|
||||
// 处理指标完成情况统计
|
||||
List<CommonGetCompleteFromPerformanceVo> commonCompleteStatisticsFromPerformance = this.baseMapper.getCommonCompleteStatisticsFromPerformance(req);
|
||||
|
||||
|
||||
// 按tag分组统计指标状态
|
||||
Map<String, CommonStatisticsVo> performanceStatisticsMap = new HashMap<>();
|
||||
|
||||
@@ -892,32 +910,32 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
@Override
|
||||
public SdmResponse getWorkstationReviewStatistics(GetWorkstationApproveStatusReq req) {
|
||||
List<WorkstationApproveStatusVo> workstationApproveStatus = this.baseMapper.getWorkstationApproveStatus(req);
|
||||
|
||||
|
||||
// 按tag分组统计审批状态
|
||||
Map<String, CommonStatisticsVo> reviewStatisticsMap = new HashMap<>();
|
||||
|
||||
|
||||
// 所有审批状态
|
||||
Set<String> allApprovalStatus = new HashSet<>();
|
||||
|
||||
|
||||
// 统计每个tag的各种审批状态数量
|
||||
for (WorkstationApproveStatusVo item : workstationApproveStatus) {
|
||||
String nodeName = item.getNodeName();
|
||||
|
||||
|
||||
CommonStatisticsVo stat = reviewStatisticsMap.getOrDefault(nodeName, new CommonStatisticsVo());
|
||||
stat.setName(nodeName);
|
||||
|
||||
|
||||
Map<String, Integer> statusCount = stat.getStatusCount();
|
||||
if (statusCount == null) {
|
||||
statusCount = new HashMap<>();
|
||||
stat.setStatusCount(statusCount);
|
||||
}
|
||||
|
||||
|
||||
String approvalStatus = item.getApprovalStatus();
|
||||
allApprovalStatus.add(approvalStatus);
|
||||
statusCount.put(approvalStatus, statusCount.getOrDefault(approvalStatus, 0) + 1);
|
||||
reviewStatisticsMap.put(nodeName, stat);
|
||||
}
|
||||
|
||||
|
||||
// 转换为列表返回
|
||||
List<CommonStatisticsVo> result = new ArrayList<>(reviewStatisticsMap.values());
|
||||
JSONObject resultResponse = new JSONObject();
|
||||
@@ -928,12 +946,12 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
|
||||
@Override
|
||||
public SdmResponse renameNode(RenameNodeReq req) {
|
||||
if(NodeTypeEnum.TASK.getValue().equals(req.getUuidOwnType())){
|
||||
if (NodeTypeEnum.TASK.getValue().equals(req.getUuidOwnType())) {
|
||||
simulationTaskService.lambdaUpdate()
|
||||
.set(SimulationTask::getTaskName, req.getNewName())
|
||||
.eq(SimulationTask::getUuid, req.getUuid())
|
||||
.update();
|
||||
} else if(NodeTypeEnum.RUN.getValue().equals(req.getUuidOwnType())){
|
||||
} else if (NodeTypeEnum.RUN.getValue().equals(req.getUuidOwnType())) {
|
||||
simulationRunService.lambdaUpdate()
|
||||
.set(SimulationRun::getRunName, req.getNewName())
|
||||
.eq(SimulationRun::getUuid, req.getUuid())
|
||||
|
||||
@@ -6,7 +6,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.sdm.common.common.ResultCode;
|
||||
import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.common.common.ThreadLocalContext;
|
||||
import com.sdm.common.entity.constants.SystemConstants;
|
||||
import com.sdm.common.entity.enums.DirTypeEnum;
|
||||
import com.sdm.common.entity.enums.NodeTypeEnum;
|
||||
import com.sdm.common.entity.req.data.CreateDirReq;
|
||||
@@ -119,9 +118,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
for (Map.Entry<String, List<TaskEditNodeReq>> taskEntry : editNodeListMap.entrySet()) {
|
||||
nodeType = taskEntry.getKey();
|
||||
log.info("nodeType为:{}", nodeType);
|
||||
if (SystemConstants.TASK_TAG.equals(nodeType)) {
|
||||
if (NodeTypeEnum.TASK.getValue().equals(nodeType)) {
|
||||
editTaskList(taskEntry.getValue());
|
||||
}else if (SystemConstants.PERFORMANCE_TAG.equals(nodeType)) {
|
||||
}else if (NodeTypeEnum.PERFORMANCE.getValue().equals(nodeType)) {
|
||||
editPerformanceList(taskEntry.getValue());
|
||||
}else {
|
||||
SpdmEditNodeReq spdmEditNodeReq = new SpdmEditNodeReq();
|
||||
@@ -620,9 +619,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
log.error("参数不能为空");
|
||||
return SdmResponse.failed("参数不能为空");
|
||||
}
|
||||
List<SpdmDeleteProjectDetailReq> nodeList = deleteNodeList.stream().filter(node -> !SystemConstants.TASK_TAG.equals(node.getNodeType()) && !SystemConstants.PERFORMANCE_TAG.equals(node.getNodeType())).toList();
|
||||
List<SpdmDeleteProjectDetailReq> taskList = deleteNodeList.stream().filter(node -> SystemConstants.TASK_TAG.equals(node.getNodeType())).toList();
|
||||
List<SpdmDeleteProjectDetailReq> performanceList = deleteNodeList.stream().filter(node -> SystemConstants.PERFORMANCE_TAG.equals(node.getNodeType())).toList();
|
||||
List<SpdmDeleteProjectDetailReq> nodeList = deleteNodeList.stream().filter(node -> !NodeTypeEnum.TASK.getValue().equals(node.getNodeType()) && !NodeTypeEnum.PERFORMANCE.getValue().equals(node.getNodeType())).toList();
|
||||
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(performanceList)) {
|
||||
List<String> performanceNodeIdList = performanceList.stream().map(SpdmDeleteProjectDetailReq::getUuid).toList();
|
||||
log.info("删除指标:{}",performanceNodeIdList);
|
||||
@@ -996,7 +995,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
taskNode.setExtras(projectNodeExtraPos);
|
||||
taskNode.setNodeName(taskNode.getTaskName());
|
||||
taskNode.setNodeCode(taskNode.getTaskCode());
|
||||
taskNode.setNodeType(SystemConstants.TASK_TAG);
|
||||
taskNode.setNodeType(NodeTypeEnum.TASK.getValue());
|
||||
taskNode.setPid(nodeId);
|
||||
taskNode.setGroup(taskNodePo.getGroupName());
|
||||
if (StringUtils.isNotBlank(taskNode.getAnalyseSoftware())) {
|
||||
@@ -1026,7 +1025,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
}
|
||||
}
|
||||
performanceNode.setExtras(eachTaskNodeExtraPoList);
|
||||
performanceNode.setNodeType(SystemConstants.PERFORMANCE_TAG);
|
||||
performanceNode.setNodeType(NodeTypeEnum.PERFORMANCE.getValue());
|
||||
performanceNode.setPid(taskNodePo.getUuid());
|
||||
performanceNodeChildren.add(performanceNode);
|
||||
}
|
||||
@@ -1572,13 +1571,13 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
}
|
||||
for (TaskNode taskNode : projectNodeList) {
|
||||
if (ObjectUtils.isEmpty(projectNodeMap.get(taskNode.getParentId()))
|
||||
&& ObjectUtils.isEmpty(projectNodePoMap.get(taskNode.getParentId())) && !SystemConstants.PROJECT_TAG.equals(taskNode.getNodeType())) {
|
||||
&& ObjectUtils.isEmpty(projectNodePoMap.get(taskNode.getParentId())) && !NodeTypeEnum.PROJECT.getValue().equals(taskNode.getNodeType())) {
|
||||
log.error("新增节点时,根据parentId:{},未查询到节点", taskNode.getParentId());
|
||||
response = SdmResponse.failed("新增节点时,创建文件失败");
|
||||
return response;
|
||||
}
|
||||
createDir(taskNode.getUuid(),NodeTypeEnum.NODE.getValue(),
|
||||
SystemConstants.PROJECT_TAG.equals(taskNode.getNodeType()) ? null : (ObjectUtils.isNotEmpty(projectNodePoMap.get(taskNode.getParentId()))
|
||||
createDir(taskNode.getUuid(),taskNode.getNodeType(),
|
||||
NodeTypeEnum.PROJECT.getValue().equals(taskNode.getNodeType()) ? null : (ObjectUtils.isNotEmpty(projectNodePoMap.get(taskNode.getParentId()))
|
||||
? projectNodePoMap.get(taskNode.getParentId()).getUuid()
|
||||
: projectNodeMap.get(taskNode.getParentId()).getUuid()),
|
||||
taskNode.getNodeName());
|
||||
@@ -1633,7 +1632,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
response = SdmResponse.failed("新增分析项时,创建文件失败");
|
||||
return response;
|
||||
}
|
||||
createDir(taskNode.getUuid(),NodeTypeEnum.TASK.getValue(), projectNodePoMap.get(taskNode.getParentId()).getUuid(), taskNode.getNodeName());
|
||||
createDir(taskNode.getUuid(),taskNode.getNodeType(), projectNodePoMap.get(taskNode.getParentId()).getUuid(), taskNode.getNodeName());
|
||||
|
||||
}
|
||||
} else {
|
||||
@@ -1643,7 +1642,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
response = SdmResponse.failed("新增分析项时,创建文件失败");
|
||||
return response;
|
||||
}
|
||||
createDir(taskNode.getUuid(),NodeTypeEnum.TASK.getValue(),
|
||||
createDir(taskNode.getUuid(),taskNode.getNodeType(),
|
||||
ObjectUtils.isNotEmpty(projectNodePoMap.get(taskNode.getParentId())) ? projectNodePoMap.get(taskNode.getParentId()).getUuid() : projectNodeMap.get(taskNode.getParentId()).getUuid(),
|
||||
taskNode.getNodeName());
|
||||
}
|
||||
@@ -1688,7 +1687,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
response = SdmResponse.failed("新增指标时,创建文件失败");
|
||||
return response;
|
||||
}
|
||||
createDir(taskNode.getUuid(), NodeTypeEnum.PERFORMANCE.getValue(), taskNodePoMap.get(taskNode.getTaskId()).getUuid(), taskNode.getNodeName());
|
||||
createDir(taskNode.getUuid(), taskNode.getNodeType(), taskNodePoMap.get(taskNode.getTaskId()).getUuid(), taskNode.getNodeName());
|
||||
}
|
||||
} else {
|
||||
for (TaskNode taskNode : projectNodePerformanceList) {
|
||||
@@ -1697,7 +1696,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
response = SdmResponse.failed("新增指标时,创建文件失败");
|
||||
return response;
|
||||
}
|
||||
createDir(taskNode.getUuid(),NodeTypeEnum.PERFORMANCE.getValue(),
|
||||
createDir(taskNode.getUuid(),taskNode.getNodeType(),
|
||||
ObjectUtils.isNotEmpty(taskNodePoMap.get(taskNode.getTaskId())) ? taskNodePoMap.get(taskNode.getTaskId()).getUuid() : taskNodeMap.get(taskNode.getTaskId()).getUuid(),
|
||||
taskNode.getNodeName());
|
||||
}
|
||||
@@ -1761,13 +1760,13 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
}
|
||||
for (TaskNode taskNode : projectNodeList) {
|
||||
if (ObjectUtils.isEmpty(projectNodeMap.get(taskNode.getParentId()))
|
||||
&& ObjectUtils.isEmpty(projectNodePoMap.get(taskNode.getParentId())) && !SystemConstants.PROJECT_TAG.equals(taskNode.getNodeType())) {
|
||||
&& ObjectUtils.isEmpty(projectNodePoMap.get(taskNode.getParentId())) && !NodeTypeEnum.PROJECT.getValue().equals(taskNode.getNodeType())) {
|
||||
log.error("新增节点时,根据parentId:{},未查询到节点", taskNode.getParentId());
|
||||
response = SdmResponse.failed("新增节点时,创建文件失败");
|
||||
return response;
|
||||
}
|
||||
createDir(taskNode.getUuid(),
|
||||
SystemConstants.PROJECT_TAG.equals(taskNode.getNodeType()) ? null : (ObjectUtils.isNotEmpty(projectNodePoMap.get(taskNode.getParentId()))
|
||||
NodeTypeEnum.PROJECT.getValue().equals(taskNode.getNodeType()) ? null : (ObjectUtils.isNotEmpty(projectNodePoMap.get(taskNode.getParentId()))
|
||||
? projectNodePoMap.get(taskNode.getParentId()).getUuid()
|
||||
: projectNodeMap.get(taskNode.getParentId()).getUuid()),
|
||||
taskNode.getNodeName());
|
||||
@@ -1964,9 +1963,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
eachProjectNode.setTenantId(tenantId);
|
||||
String nodeType = eachProjectNode.getNodeType();
|
||||
List<TaskNode> childrenNodeList = eachProjectNode.getChildren();
|
||||
if (SystemConstants.TASK_TAG.equals(nodeType)) {
|
||||
if (NodeTypeEnum.TASK.getValue().equals(nodeType)) {
|
||||
handleTaskExtraAndMember(eachProjectNode, taskNodeList, taskNodeMemberList, taskNodeExtraList, tagList,taskIdMap);
|
||||
} else if (SystemConstants.PERFORMANCE_TAG.equals(nodeType)) {
|
||||
} else if (NodeTypeEnum.PERFORMANCE.getValue().equals(nodeType)) {
|
||||
eachProjectNode.setTaskId(parentId);
|
||||
handlePerformanceExtra(eachProjectNode, taskPerformanceList, performanceExtraList);
|
||||
} else {
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.alibaba.fastjson2.JSONObject;
|
||||
import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.common.common.ThreadLocalContext;
|
||||
import com.sdm.common.entity.constants.ProjectConstants;
|
||||
import com.sdm.common.entity.constants.SystemConstants;
|
||||
import com.sdm.common.entity.enums.NodeTypeEnum;
|
||||
import com.sdm.common.entity.req.system.UserQueryReq;
|
||||
import com.sdm.common.entity.resp.system.CIDUserResp;
|
||||
import com.sdm.common.feign.impl.system.SysUserFeignClientImpl;
|
||||
@@ -741,11 +741,11 @@ public class TaskServiceImpl implements ITaskService {
|
||||
for (SpdmAnalysisTaskVo task : taskVoList) {
|
||||
eachProjectNodePo = nodeMap.get(task.getNodeId());
|
||||
if (ObjectUtils.isNotEmpty(eachProjectNodePo)) {
|
||||
if (SystemConstants.PROJECT_TAG.equals(eachProjectNodePo.getNodeType())) {
|
||||
if (NodeTypeEnum.PROJECT.getValue().equals(eachProjectNodePo.getNodeType())) {
|
||||
task.setProjectName(eachProjectNodePo.getNodeName());
|
||||
} else if (SystemConstants.PHASE_TAG.equals(eachProjectNodePo.getNodeType())) {
|
||||
} else if (NodeTypeEnum.PHASE.getValue().equals(eachProjectNodePo.getNodeType())) {
|
||||
task.setPhaseName(eachProjectNodePo.getNodeName());
|
||||
} else if (SystemConstants.DISCIPLINE_TAG.equals(eachProjectNodePo.getNodeType())) {
|
||||
} else if (NodeTypeEnum.DISCIPLINE.getValue().equals(eachProjectNodePo.getNodeType())) {
|
||||
task.setDisciplineName(eachProjectNodePo.getNodeName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,4 +112,9 @@ management:
|
||||
redis:
|
||||
enabled: false
|
||||
db:
|
||||
enabled: false
|
||||
enabled: false
|
||||
|
||||
# 0单机处理,可以指向本地,1负载均衡轮询
|
||||
serverType: 0
|
||||
#serverIp: 192.168.65.161
|
||||
serverIp: 192.168.65.73
|
||||
@@ -1,3 +1,3 @@
|
||||
spring:
|
||||
profiles:
|
||||
active: dev
|
||||
active: local
|
||||
@@ -42,4 +42,4 @@ fi
|
||||
echo "正在启动项目... "
|
||||
|
||||
# 启动项目并保留控制台输出
|
||||
nohup java ${JVM_OPTS} -jar "${FULL_JAR_PATH}" > "${LOG_FILE}" 2>&1 &
|
||||
nohup java ${JVM_OPTS} -Dspring.profiles.active=dev -jar "${FULL_JAR_PATH}" > "${LOG_FILE}" 2>&1 &
|
||||
|
||||
@@ -6,7 +6,10 @@
|
||||
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
|
||||
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
|
||||
<!-- 彩色日志格式 -->
|
||||
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr([%15.15t]){faint} %clr(%logger){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
|
||||
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr([%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr([%15.15t]){faint} %clr(%logger){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
|
||||
<!-- 普通日志格式(无颜色) -->
|
||||
<property name="FILE_LOG_PATTERN" value="[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%15.15t] %logger : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}" />
|
||||
|
||||
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
|
||||
<property name="LOG_HOME" value="/home/app/project/logs" />
|
||||
<!-- 控制台输出 -->
|
||||
@@ -29,7 +32,7 @@
|
||||
</rollingPolicy>
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
|
||||
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
||||
<pattern>${FILE_LOG_PATTERN}</pattern>
|
||||
<charset>UTF-8</charset>
|
||||
</encoder>
|
||||
<!--日志文件最大的大小-->
|
||||
@@ -38,6 +41,30 @@
|
||||
<!-- </triggeringPolicy>-->
|
||||
</appender>
|
||||
|
||||
<!-- 4. core.log 专用输出器(保留 callerInfo 格式) -->
|
||||
<appender name="CORE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${LOG_HOME}/core.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<FileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
|
||||
<MaxHistory>30</MaxHistory>
|
||||
<TotalSizeCap>500MB</TotalSizeCap>
|
||||
<maxFileSize>10MB</maxFileSize>
|
||||
</rollingPolicy>
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<!-- 仅 core.log 显示真实调用位置(类名.方法名(行号)) -->
|
||||
<pattern>[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%15.15t] %X{callerInfo} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<level>INFO</level>
|
||||
</filter>
|
||||
</appender>
|
||||
|
||||
<!-- 绑定 coreLogger → 输出到 core.log + 控制台 -->
|
||||
<logger name="coreLogger" level="INFO" additivity="false">
|
||||
<appender-ref ref="CORE_FILE" /> <!-- 核心日志写入 core.log -->
|
||||
<appender-ref ref="STDOUT" /> <!-- 同时输出到控制台(显示 CoreLogger) -->
|
||||
</logger>
|
||||
|
||||
<!-- 日志输出级别 -->
|
||||
<root level="INFO">
|
||||
<appender-ref ref="STDOUT" />
|
||||
|
||||
@@ -331,20 +331,12 @@
|
||||
select
|
||||
nm.nodeId,
|
||||
nm.user_id as userId,
|
||||
su.nickname,
|
||||
sur.groupId
|
||||
from simulation_node_member nm
|
||||
LEFT JOIN sys_user su on nm.user_id = su.id
|
||||
left join sys_user_group_relation sur on sur.userId = su.id
|
||||
<where>
|
||||
nm.user_id is not null and sur.groupId is not null
|
||||
<if test="userGroupId != null">
|
||||
and sur.groupId = #{userGroupId}
|
||||
</if>
|
||||
<if test="userId != null">
|
||||
and nm.user_id = #{userId}
|
||||
</if>
|
||||
</where>
|
||||
from simulation_node_member
|
||||
where user_id in (
|
||||
<foreach collection='userIds' item='userId' index='index' separator=','>
|
||||
#{userId}
|
||||
</foreach>
|
||||
)
|
||||
</select>
|
||||
|
||||
<select id="getUserGroupTaskCompleteStatistics"
|
||||
|
||||
Reference in New Issue
Block a user