diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java index bd7b1cee9e..75deb3ffbd 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java @@ -2421,17 +2421,18 @@ public class FlowTaskService extends MybatisBaseService map = flowableQuery.getMap(); boolean taskKeyTrue = false; List flowElements = processService.calApprovePath("", modelId, map); + // 过滤空的节点ID List collect = flowElements.stream().filter(item -> item.getId().length() > 0).collect(Collectors.toList()); for (int i = 0; i < collect.size(); i++) { Map itemMap = new HashMap<>(); FlowElement item = collect.get(i); if (StringUtils.isBlank(flowableQuery.getTaskDefKey())) { - log.info("flowElement:{}", item); - log.info("nodeName:{}", item.getName()); +// log.info("flowElement:{}", item); +// log.info("nodeName:{}", item.getName()); itemMap.put("nodeName", item.getName()); - log.info("nodeId:{}", item.getId()); +// log.info("nodeId:{}", item.getId()); itemMap.put("nodeId", item.getId()); - String s = JSON.toJSONString(item); + /* String s = JSON.toJSONString(item); JSONObject jsonObject = JSONObject.parseObject(s); log.info("item:{}", jsonObject); Object candidateGroups = jsonObject.get("candidateGroups"); @@ -2442,7 +2443,7 @@ public class FlowTaskService extends MybatisBaseService 0) { log.info("candidateGroups_sid:{}", candidateGroups_arr.get(0)); } - log.info("candidateGroups:{}", candidateGroups_arr); + log.info("candidateGroups:{}", candidateGroups_arr);*/ list.add(itemMap); } else { if (flowableQuery.getTaskDefKey().equals(item.getId())) { @@ -2450,12 +2451,12 @@ public class FlowTaskService extends MybatisBaseService 0) { log.info("candidateGroups_sid:{}", candidateGroups_arr.get(0)); } - log.info("candidateGroups:{}", candidateGroups_arr); + log.info("candidateGroups:{}", candidateGroups_arr);*/ list.add(itemMap); } } diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentService.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentService.java index 4095efe52f..d756dc8d59 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentService.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentService.java @@ -42,9 +42,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.Arrays; -import java.util.List; -import java.util.UUID; +import java.util.*; import java.util.stream.Collectors; /** @@ -62,81 +60,122 @@ import java.util.stream.Collectors; */ @Service public class ProcessCommentService extends MybatisBaseService { - @Resource - private SysUserFeign sysUserFeign; - @Resource - private FileUploadComponent fileUploadComponent; - private QueryWrapper createQueryWrapper(ProcessCommentQuery query) { - // todo: 这里根据具体业务调整查询条件 - // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); - QueryWrapper qw = new QueryWrapper<>(); - return qw; - } - - public PagerVo listPageVo(PagerQuery pq) { - ProcessCommentQuery query = pq.getParams(); - QueryWrapper qw = createQueryWrapper(query); - IPage page = PagerUtil.queryToPage(pq); - IPage pagging = baseMapper.selectPageVo(page, qw); - PagerVo p = PagerUtil.pageToVo(pagging, null); - return p; - } - - public void saveOrUpdateDto(ProcessCommentDto dto){ + @Resource + private SysUserFeign sysUserFeign; + @Resource + private FileUploadComponent fileUploadComponent; + + private QueryWrapper createQueryWrapper(ProcessCommentQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + ProcessCommentQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public void saveOrUpdateDto(ProcessCommentDto dto) { String dtoSid = dto.getSid(); if (StringUtils.isBlank(dtoSid)) { - dto.setSid(UUID.randomUUID().toString()); - baseMapper.insertByDto(dto); - return; - } - this.updateByDto(dto); - } - - public void insertByDto(ProcessCommentDto dto){ - ProcessComment entity = new ProcessComment(); - BeanUtil.copyProperties(dto, entity, "id", "sid"); - baseMapper.insert(entity); - } - - public void updateByDto(ProcessCommentDto dto){ - String dtoSid = dto.getSid(); + dto.setSid(UUID.randomUUID().toString()); + baseMapper.insertByDto(dto); + return; + } + this.updateByDto(dto); + } + + public void insertByDto(ProcessCommentDto dto) { + ProcessComment entity = new ProcessComment(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.insert(entity); + } + + public void updateByDto(ProcessCommentDto dto) { + String dtoSid = dto.getSid(); if (StringUtils.isBlank(dtoSid)) { return; - } - ProcessComment entity = fetchBySid(dtoSid); - BeanUtil.copyProperties(dto, entity, "id", "sid"); - baseMapper.updateById(entity); - } - - public ProcessCommentDetailsVo fetchDetailsVoBySid(String sid){ - ProcessComment entity = fetchBySid(sid); - ProcessCommentDetailsVo vo = new ProcessCommentDetailsVo(); - BeanUtil.copyProperties(entity, vo); - return vo; - } - - public List getCommentList(String processId) { - List commentList = baseMapper.getCommentList(processId); - for(ProcessCommentVo histIns:commentList){ - if(StringUtils.isNotBlank(histIns.getProcessFile())){ - List processFile = Arrays.asList(histIns.getProcessFile().split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList()); - histIns.setFileList(processFile); - } - ResultBean> sysUserVoResultBean = sysUserFeign.fetchBySids(histIns.getReviewerSid());// sysUserService.selectUserById(Long.parseLong(histIns.getAssignee())); - List data1 = sysUserVoResultBean.getData(); - for( SysUserVo data:data1){ - AppUserVo taskUserInfo=new AppUserVo(); - taskUserInfo.setAssigneeName(data.getName()); - if(!com.yxt.common.base.utils.StringUtils.isBlank(data.getHeadImage())){ - taskUserInfo.setAssigneeHeadImage(fileUploadComponent.getUrlPrefix() +data.getHeadImage()); - } - histIns.setTaskUserInfo(taskUserInfo); - } - } - return commentList; - } - - public List selectByIdAndComment(String comment, String instanceId) { - return baseMapper.selectByIdAndComment(comment, instanceId); - } + } + ProcessComment entity = fetchBySid(dtoSid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.updateById(entity); + } + + public ProcessCommentDetailsVo fetchDetailsVoBySid(String sid) { + ProcessComment entity = fetchBySid(sid); + ProcessCommentDetailsVo vo = new ProcessCommentDetailsVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public List getCommentList(String processId) { + List commentList = baseMapper.getCommentList(processId); + // 2. 获取所有 reviewerSid 批量查询用户信息 + Set reviewerSids = commentList.stream() + .filter(c -> StringUtils.isNotBlank(c.getReviewerSid())) + .map(ProcessCommentVo::getReviewerSid) + .collect(Collectors.toSet()); + // 批量查询所有评论中的 reviewerSid 对应的用户信息 + Map userMap = new HashMap<>(); + // 将 Set 转换为以逗号分隔的字符串 + String assigneeIdsStr = String.join(",", reviewerSids); + if (StringUtils.isNotBlank(assigneeIdsStr)) { + userMap = sysUserFeign.fetchBySids(assigneeIdsStr).getData().stream() + .collect(Collectors.toMap(SysUserVo::getSid, user -> user)); + } + + + // 3. 遍历 commentList,填充文件列表和用户信息 + for (ProcessCommentVo histIns : commentList) { + // 处理文件列表 + if (StringUtils.isNotBlank(histIns.getProcessFile())) { + List processFile = Arrays.asList(histIns.getProcessFile().split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList()); + histIns.setFileList(processFile); + } + + // 处理用户信息 + SysUserVo user = userMap.get(histIns.getReviewerSid()); + if (user != null) { + AppUserVo taskUserInfo = new AppUserVo(); + taskUserInfo.setAssigneeName(user.getName()); + if (StringUtils.isNotBlank(user.getHeadImage())) { + taskUserInfo.setAssigneeHeadImage(fileUploadComponent.getUrlPrefix() + user.getHeadImage()); + } + histIns.setTaskUserInfo(taskUserInfo); + } + } + + return commentList; + } + + public List getCommentListOld(String processId) { + List commentList = baseMapper.getCommentList(processId); + for (ProcessCommentVo histIns : commentList) { + if (StringUtils.isNotBlank(histIns.getProcessFile())) { + List processFile = Arrays.asList(histIns.getProcessFile().split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList()); + histIns.setFileList(processFile); + } + ResultBean> sysUserVoResultBean = sysUserFeign.fetchBySids(histIns.getReviewerSid());// sysUserService.selectUserById(Long.parseLong(histIns.getAssignee())); + List data1 = sysUserVoResultBean.getData(); + for (SysUserVo data : data1) { + AppUserVo taskUserInfo = new AppUserVo(); + taskUserInfo.setAssigneeName(data.getName()); + if (!com.yxt.common.base.utils.StringUtils.isBlank(data.getHeadImage())) { + taskUserInfo.setAssigneeHeadImage(fileUploadComponent.getUrlPrefix() + data.getHeadImage()); + } + histIns.setTaskUserInfo(taskUserInfo); + } + } + return commentList; + } + + public List selectByIdAndComment(String comment, String instanceId) { + return baseMapper.selectByIdAndComment(comment, instanceId); + } } \ No newline at end of file diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java index f624dc56d6..75d6d874c5 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java @@ -256,7 +256,7 @@ public class FlowableRest implements FlowableFeign { stringObjectMap.put("taskName", f.get("nodeName").toString()); stringObjectMap.put("finishTime", null); stringObjectMap.put("createTime", ""); - stringObjectMap.put("taskUserInfos", new ArrayList<>()); + stringObjectMap.put("taskUserInfos", Collections.emptyList()); a.setFlowableRecordVo(stringObjectMap); a.setState("3");