1、修改data模块的queryDir接口

This commit is contained in:
2026-02-03 21:30:59 +08:00
parent 9d821ca1f9
commit 9f717f14ce
7 changed files with 321 additions and 0 deletions

View File

@@ -47,4 +47,10 @@ public class QueryDirReq extends BaseReq {
@Schema(description = "项目id")
String projectId;
/**
* 文件夹id
*/
@Schema(description = "文件夹id")
private Long dirId;
}

View File

@@ -844,6 +844,12 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
return SdmResponse.success();
}
parentId = nodeMetadataInfo.getId();
} else if (ObjectUtils.isNotEmpty(req.getDirId())) {
FileMetadataInfo nodeMetadataInfo = fileMetadataInfoService.getById(req.getDirId());
if (nodeMetadataInfo == null) {
return SdmResponse.success();
}
parentId = nodeMetadataInfo.getId();
} else {
return SdmResponse.success();
}

View File

@@ -177,4 +177,17 @@ public class SimulationDemandController {
return demandService.deleteDemandNoPermission(req);
}
/**
* 需求列表(无权限)
*
* @param req
* @return
*/
@SysLog("查询需求列表")
@GetMapping("/listNoPermission")
@Operation(summary = "需求列表(我发起的、我确认的)", description = "需求列表(我发起的、我确认的)")
public SdmResponse listNoPermission(@Validated SpdmDemandListReq req) {
return demandService.listNoPermission(req);
}
}

View File

@@ -28,6 +28,8 @@ public interface SimulationDemandMapper extends BaseMapper<SimulationDemand> {
List<SpdmDemandVo> getDemandList(@Param("tenantId") Long tenantId,@Param("req") SpdmDemandListReq req);
List<SpdmDemandVo> getDemandListNoPermission(@Param("req") SpdmDemandListReq req);
List<SpdmDemandMemberVo> getMemberList(@Param("demandIdList") List<String> demandIdList, @Param("memberType") Integer memberType);
SpdmDemandVo getDemandByName(@Param("tenantId") Long tenantId,@Param("demandName") String demandName);

View File

@@ -53,4 +53,5 @@ public interface IDemandService {
SdmResponse editDemandNoPermission(SpdmEditDemandReq req);
SdmResponse listNoPermission(SpdmDemandListReq req);
}

View File

@@ -1700,4 +1700,269 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
return SdmResponse.success();
}
@Override
public SdmResponse listNoPermission(SpdmDemandListReq req) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("data", new ArrayList<>());
List<SpdmDemandVo> demandList = mapper.getDemandListNoPermission(req);
if (CollectionUtils.isEmpty(demandList)) {
log.error("未查询到需求");
return SdmResponse.success(jsonObject);
}
// 0我发起的 1我确认的
Integer type = req.getType();
if (type != 0 && type != 1) {
log.error("type必须为0或1");
return SdmResponse.success(jsonObject);
}
List<SpdmDemandMemberVo> demandMemberVoList = mapper.getMemberList(demandList.stream().map(SpdmDemandVo::getUuid).toList(), null);
List<SpdmTaskVo> taskList = taskMapper.getTaskListByDemandIdList(demandList.stream().map(SpdmDemandVo::getUuid).toList());
Map<String, List<SpdmTaskVo>> taskMap = Map.of();
if (CollectionUtils.isNotEmpty(taskList)) {
taskMap = taskList.stream().collect(Collectors.groupingBy(SpdmTaskVo::getDemandId));
}
// 需求的状态和进度需要根据任务来确定
if (StringUtils.isNotBlank(req.getAchieveStatus()) || StringUtils.isNotBlank(req.getDemandStatus())) {
if (StringUtils.isNotBlank(req.getAchieveStatus())) {
String achieveStatus = req.getAchieveStatus();
List<String> achieveStatusList = Arrays.stream(achieveStatus.split(",")).toList();
if (CollectionUtils.isEmpty(taskList)) {
demandList = demandList.stream().filter(firstDemand -> achieveStatusList.contains(firstDemand.getAchieveStatus())).toList();
} else {
List<SpdmTaskVo> eachTaskList;
String eachStatus;
List<SpdmDemandVo> newDemandList = new ArrayList<>();
for (SpdmDemandVo demand : demandList) {
eachTaskList = taskMap.get(demand.getUuid());
if (CollectionUtils.isEmpty(eachTaskList)) {
log.info("当前需求:{}没有关联的任务", demand.getId());
if (achieveStatusList.contains(demand.getAchieveStatus())) {
newDemandList.add(demand);
}
} else {
if (eachTaskList.stream().map(SpdmTaskVo::getAchieveStatus).toList().contains(TaskAchieveStatusEnum.UNQUALIFIED.getCode())) {
eachStatus = TaskAchieveStatusEnum.UNQUALIFIED.getCode();
} else if (eachTaskList.stream().map(SpdmTaskVo::getAchieveStatus).toList().contains(TaskAchieveStatusEnum.NO_CALCULATE.getCode())) {
eachStatus = TaskAchieveStatusEnum.NO_CALCULATE.getCode();
} else {
eachStatus = TaskAchieveStatusEnum.QUALIFIED.getCode();
}
log.info("当前需求:{}的风险状态为:{}", demand.getId(), eachStatus);
if (!achieveStatusList.contains(eachStatus)) {
continue;
}
newDemandList.add(demand);
}
}
demandList = newDemandList;
}
}
if (CollectionUtils.isEmpty(demandList)) {
log.error("demandList2为空");
return SdmResponse.success(jsonObject);
}
if (StringUtils.isNotBlank(req.getDemandStatus())) {
String demandStatus = req.getDemandStatus();
List<String> demandStatusList = Arrays.stream(demandStatus.split(",")).toList();
if (CollectionUtils.isEmpty(taskList)) {
demandList = demandList.stream().filter(firstDemand -> demandStatusList.contains(firstDemand.getDemandStatus())).toList();
} else {
List<SpdmTaskVo> eachTaskList;
String eachStatus = "";
List<SpdmDemandVo> newDemandList = new ArrayList<>();
for (SpdmDemandVo demand : demandList) {
eachTaskList = taskMap.get(demand.getUuid());
if (CollectionUtils.isEmpty(eachTaskList)) {
log.info("当前需求:{}没有关联的任务", demand.getId());
if (demandStatusList.contains(demand.getDemandStatus())) {
newDemandList.add(demand);
}
} else {
// 有进行中就是进行中,
// 没有进行中,有暂停就是暂停
// 没有进行中和暂停,有延期就是延期
// 全部已完成就已完成
// 全部关闭就已关闭
// 全部未开始就未开始
// 全部驳回就驳回
// 其他 进行中
List<String> statusList = eachTaskList.stream().map(SpdmTaskVo::getExeStatus).toList();
if (statusList.contains(TaskExeStatusEnum.IN_PROGRESS.getCode())) {
eachStatus = TaskExeStatusEnum.IN_PROGRESS.getCode();
} else if (statusList.contains(TaskExeStatusEnum.PAUSED.getCode())) {
eachStatus = TaskExeStatusEnum.PAUSED.getCode();
} else if (statusList.contains(TaskExeStatusEnum.POSTPONED.getCode())) {
eachStatus = TaskExeStatusEnum.POSTPONED.getCode();
} else if (statusList.stream().allMatch(status -> TaskExeStatusEnum.COMPLETED.getCode().equals(status))) {
eachStatus = TaskExeStatusEnum.COMPLETED.getCode();
} else if (statusList.stream().allMatch(status -> TaskExeStatusEnum.CLOSED.getCode().equals(status))) {
eachStatus = TaskExeStatusEnum.CLOSED.getCode();
} else if (statusList.stream().allMatch(status -> TaskExeStatusEnum.NO_STARTED.getCode().equals(status))) {
eachStatus = TaskExeStatusEnum.NO_STARTED.getCode();
} else if (statusList.stream().allMatch(status -> TaskExeStatusEnum.REJECTED.getCode().equals(status))) {
eachStatus = TaskExeStatusEnum.REJECTED.getCode();
} else {
eachStatus = TaskExeStatusEnum.IN_PROGRESS.getCode();
}
log.info("当前需求:{}的需求状态为:{}", demand.getId(), eachStatus);
if (!demandStatusList.contains(eachStatus)) {
continue;
}
newDemandList.add(demand);
}
}
demandList = newDemandList;
}
}
}
if (CollectionUtils.isEmpty(demandList)) {
log.error("demandList3为空");
return SdmResponse.success(jsonObject);
}
jsonObject.put("currentPage", req.getCurrent());
jsonObject.put("pageSize", req.getSize());
jsonObject.put("total", demandList.size());
demandList = demandList.stream().skip((long) (req.getCurrent() - 1) * req.getSize()).limit(req.getSize()).toList();
if (CollectionUtils.isEmpty(demandList)) {
log.error("demandList4为空");
return SdmResponse.success(jsonObject);
}
List<SpdmTaskVo> eachTaskList;
String eachAchieveStatus;
String eachExeStatus;
for (SpdmDemandVo demand : demandList) {
eachTaskList = taskMap.get(demand.getUuid());
if (CollectionUtils.isEmpty(eachTaskList)) {
demand.setAchieveStatus("0");
continue;
}
if (eachTaskList.stream().map(SpdmTaskVo::getAchieveStatus).toList().contains(TaskAchieveStatusEnum.UNQUALIFIED.getCode())) {
eachAchieveStatus = TaskAchieveStatusEnum.UNQUALIFIED.getCode();
} else if (eachTaskList.stream().map(SpdmTaskVo::getAchieveStatus).toList().contains(TaskAchieveStatusEnum.NO_CALCULATE.getCode())) {
eachAchieveStatus = TaskAchieveStatusEnum.NO_CALCULATE.getCode();
} else {
eachAchieveStatus = TaskAchieveStatusEnum.QUALIFIED.getCode();
}
demand.setAchieveStatus(eachAchieveStatus);
List<String> statusList = eachTaskList.stream().map(SpdmTaskVo::getExeStatus).toList();
if (statusList.contains(TaskExeStatusEnum.IN_PROGRESS.getCode())) {
eachExeStatus = TaskExeStatusEnum.IN_PROGRESS.getCode();
} else if (statusList.contains(TaskExeStatusEnum.PAUSED.getCode())) {
eachExeStatus = TaskExeStatusEnum.PAUSED.getCode();
} else if (statusList.contains(TaskExeStatusEnum.POSTPONED.getCode())) {
eachExeStatus = TaskExeStatusEnum.POSTPONED.getCode();
} else if (statusList.stream().allMatch(status -> TaskExeStatusEnum.COMPLETED.getCode().equals(status))) {
eachExeStatus = TaskExeStatusEnum.COMPLETED.getCode();
} else if (statusList.stream().allMatch(status -> TaskExeStatusEnum.CLOSED.getCode().equals(status))) {
eachExeStatus = TaskExeStatusEnum.CLOSED.getCode();
} else if (statusList.stream().allMatch(status -> TaskExeStatusEnum.NO_STARTED.getCode().equals(status))) {
eachExeStatus = TaskExeStatusEnum.NO_STARTED.getCode();
} else if (statusList.stream().allMatch(status -> TaskExeStatusEnum.REJECTED.getCode().equals(status))) {
eachExeStatus = TaskExeStatusEnum.REJECTED.getCode();
} else {
eachExeStatus = TaskExeStatusEnum.IN_PROGRESS.getCode();
}
demand.setDemandStatus(eachExeStatus);
}
Map<String, List<SpdmDemandMemberVo>> demandMemberMap = Map.of();
if (CollectionUtils.isNotEmpty(demandMemberVoList)) {
demandMemberMap = demandMemberVoList.stream().collect(Collectors.groupingBy(SpdmDemandMemberVo::getDemandId));
}
List<SpdmDemandMemberVo> eachDemandMemberList;
List<String> nodeIdList = new ArrayList<>();
List<String> projectIdList = demandList.stream().map(SpdmDemandVo::getProjectId).toList();
if (CollectionUtils.isNotEmpty(projectIdList)) {
nodeIdList.addAll(projectIdList);
}
List<String> phaseIdList = demandList.stream().map(SpdmDemandVo::getPhaseId).toList();
if (CollectionUtils.isNotEmpty(phaseIdList)) {
nodeIdList.addAll(phaseIdList);
}
Map<String, List<SpdmNodeVo>> nodeMap = Map.of();
if (CollectionUtils.isNotEmpty(nodeIdList)) {
List<SpdmNodeVo> nodeList = nodeMapper.getNodeListByIds(nodeIdList);
if (CollectionUtils.isNotEmpty(nodeList)) {
nodeMap = nodeList.stream().collect(Collectors.groupingBy(SpdmNodeVo::getUuid));
}
}
List<Long> userIdList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(demandMemberVoList)) {
userIdList = demandMemberVoList.stream().map(SpdmDemandMemberVo::getUserId).toList();
}
Map<Long, List<CIDUserResp>> userMap = Map.of();
if (CollectionUtils.isNotEmpty(userIdList)) {
SdmResponse<List<CIDUserResp>> cidUserResp = sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(userIdList).build());
List<CIDUserResp> userList = cidUserResp.getData();
if (CollectionUtils.isNotEmpty(userList)) {
userMap = userList.stream().collect(Collectors.groupingBy(CIDUserResp::getUserId));
}
}
List<String> demandIdList = demandList.stream().map(SpdmDemandVo::getUuid).toList();
List<SpdmDemandExtraVo> demandExtraList = mapper.getDemandExtraList(demandIdList);
Map<String, List<SpdmDemandExtraVo>> demandExtraMap = Map.of();
if (CollectionUtils.isNotEmpty(demandExtraList)) {
demandExtraMap = demandExtraList.stream().collect(Collectors.groupingBy(SpdmDemandExtraVo::getDemandId));
}
for (SpdmDemandVo spdmDemandVo : demandList) {
spdmDemandVo.setExtras(demandExtraMap.get(spdmDemandVo.getUuid()));
eachTaskList = taskMap.get(spdmDemandVo.getUuid());
spdmDemandVo.setProgress(CollectionUtils.isEmpty(eachTaskList) ? 0 : eachTaskList.stream().mapToInt(SpdmTaskVo::getProgress).sum() / eachTaskList.size());
if (StringUtils.isNotBlank(spdmDemandVo.getProjectId())) {
spdmDemandVo.setProjectName(CollectionUtils.isNotEmpty(nodeMap.get(spdmDemandVo.getProjectId())) ? nodeMap.get(spdmDemandVo.getProjectId()).get(0).getNodeName() : "");
}
if (StringUtils.isNotBlank(spdmDemandVo.getPhaseId())) {
spdmDemandVo.setPhaseName(CollectionUtils.isNotEmpty(nodeMap.get(spdmDemandVo.getPhaseId())) ? nodeMap.get(spdmDemandVo.getPhaseId()).get(0).getNodeName() : "");
}
if (StringUtils.isNotBlank(spdmDemandVo.getMachineId())) {
spdmDemandVo.setMachineName(CollectionUtils.isNotEmpty(nodeMap.get(spdmDemandVo.getMachineId())) ? nodeMap.get(spdmDemandVo.getMachineId()).get(0).getNodeName() : "");
}
if (StringUtils.isNotBlank(spdmDemandVo.getWorkspaceId())) {
spdmDemandVo.setWorkspaceName(CollectionUtils.isNotEmpty(nodeMap.get(spdmDemandVo.getWorkspaceId())) ? nodeMap.get(spdmDemandVo.getWorkspaceId()).get(0).getNodeName() : "");
}
eachDemandMemberList = demandMemberMap.get(spdmDemandVo.getUuid());
if (CollectionUtils.isEmpty(eachDemandMemberList)) {
continue;
}
List<CIDUserResp> spdmPUserVoList = new ArrayList<>();
for (Long userId : eachDemandMemberList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType())).map(SpdmDemandMemberVo::getUserId).toList()) {
if (ObjectUtils.isNotEmpty(userId) && CollectionUtils.isNotEmpty(userMap.get(userId))) {
spdmPUserVoList.addAll(userMap.get(userId));
}
}
spdmDemandVo.setPMemberList(spdmPUserVoList);
List<CIDUserResp> spdmEUserVoList = new ArrayList<>();
for (Long userId : eachDemandMemberList.stream().filter(member -> MemberTypeEnum.EXECUTOR.getCode().equals(member.getType())).map(SpdmDemandMemberVo::getUserId).toList()) {
if (ObjectUtils.isNotEmpty(userId) && CollectionUtils.isNotEmpty(userMap.get(userId))) {
spdmEUserVoList.addAll(userMap.get(userId));
}
}
spdmDemandVo.setEMemberList(spdmEUserVoList);
List<CIDUserResp> spdmTUserVoList = new ArrayList<>();
for (Long userId : eachDemandMemberList.stream().filter(member -> MemberTypeEnum.THREED.getCode().equals(member.getType())).map(SpdmDemandMemberVo::getUserId).toList()) {
if (ObjectUtils.isNotEmpty(userId) && CollectionUtils.isNotEmpty(userMap.get(userId))) {
spdmTUserVoList.addAll(userMap.get(userId));
}
}
spdmDemandVo.setTMemberList(spdmTUserVoList);
List<CIDUserResp> spdmAUserVoList = new ArrayList<>();
for (Long userId : eachDemandMemberList.stream().filter(member -> MemberTypeEnum.ATTENTION.getCode().equals(member.getType())).map(SpdmDemandMemberVo::getUserId).toList()) {
if (ObjectUtils.isNotEmpty(userId) && CollectionUtils.isNotEmpty(userMap.get(userId))) {
spdmAUserVoList.addAll(userMap.get(userId));
}
}
spdmDemandVo.setAMemberList(spdmAUserVoList);
}
jsonObject.put("data", demandList);
return SdmResponse.success(jsonObject);
}
}

View File

@@ -193,4 +193,32 @@
AND mold_material.property_name = 'materialNo'
</select>
<select id="getDemandListNoPermission" resultType="com.sdm.project.model.vo.SpdmDemandVo">
select * from simulation_demand
<trim prefix="WHERE" suffixOverrides ="and">
<if test="req.demandName != null and req.demandName != ''">
<bind name="searchKey1" value="'%' + req.demandName + '%'"/>
demand_name like #{searchKey1} and
</if>
<if test="req.projectId != null and req.projectId != ''">
project_id = #{req.projectId} and
</if>
<if test="req.phaseId != null and req.phaseId != ''">
phase_id = #{req.phaseId} and
</if>
<if test="req.demandType != null and req.demandType != ''">
demand_type = #{req.demandType} and
</if>
<if test="req.simType != null and req.simType != ''">
sim_type = #{req.simType} and
</if>
<if test='req.sortOrder != null and req.sortOrder == "0"'>
order by create_time
</if>
<if test='req.sortOrder != null and req.sortOrder == "1"'>
order by create_time desc
</if>
</trim>
</select>
</mapper>