xiangpei
2025-03-21 49afbb309657585aa82095bf3b7dfc14b1265ac6
business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java
@@ -11,10 +11,7 @@
import com.ycl.common.enums.business.HandlerTypeEnum;
import com.ycl.common.enums.business.ProcessLogEventTypeEnum;
import com.ycl.domain.entity.ProcessLog;
import com.ycl.domain.json.DelegateData;
import com.ycl.domain.json.JumpData;
import com.ycl.domain.json.RejectData;
import com.ycl.domain.json.SuperviseData;
import com.ycl.domain.json.*;
import com.ycl.domain.query.ProcessLogQuery;
import com.ycl.domain.vo.ProcessLogVO;
import com.ycl.framework.utils.PageUtil;
@@ -58,7 +55,7 @@
     * @param eventDataJson json扩展内容
     */
    @Override
    public void add(String taskId, String flowInsId, ProcessLogEventTypeEnum eventType, Long projectId, String eventDataJson) {
    public void add(String taskId, String flowInsId, ProcessLogEventTypeEnum eventType, String projectId, String eventDataJson) {
        ProcessLog log = new ProcessLog();
        log.setTaskId(taskId);
        log.setProcessInsId(flowInsId);
@@ -148,8 +145,43 @@
    }
    @Override
    public Result projectProcessLogPage(ProcessLogQuery query) {
        List<ProcessLogVO> list = baseMapper.projectProcessLogPage(query);
    public Boolean taskIsWait(String taskId, String processInsId) {
        List<ProcessLog> list = new LambdaQueryChainWrapper<>(baseMapper)
                .eq(ProcessLog::getProcessInsId, processInsId)
                .eq(ProcessLog::getTaskId, taskId)
                .list();
        return list.stream().anyMatch(log -> ProcessLogEventTypeEnum.WAIT.equals(log.getEventType()))
                && list.stream().filter(log -> ProcessLogEventTypeEnum.FINISHED.equals(log.getEventType())).count() < 1;
    }
    @Override
    public Boolean taskIsJump(String taskId, String processInsId) {
        List<ProcessLog> list = new LambdaQueryChainWrapper<>(baseMapper)
                .eq(ProcessLog::getProcessInsId, processInsId)
                .eq(ProcessLog::getTaskId, taskId)
                .eq(ProcessLog::getEventType, ProcessLogEventTypeEnum.JUMP)
                .list();
        return list.size() > 0;
    }
    @Override
    public Boolean taskIsTeamwork(String taskId, String processInsId) {
        ProcessLog log = new LambdaQueryChainWrapper<>(baseMapper)
                .eq(ProcessLog::getProcessInsId, processInsId)
                .eq(ProcessLog::getTaskId, taskId)
                .eq(ProcessLog::getEventType, ProcessLogEventTypeEnum.TEAM_WORK)
                .one();
        if (Objects.isNull(log)) {
            return Boolean.FALSE;
        } else {
            // 判断协同人是否全部完成了协同。TODO
        }
        return null;
    }
    @Override
    public Result projectProcessLogList(ProcessLogQuery query) {
        List<ProcessLogVO> list = baseMapper.projectProcessLogList(query);
        // json反序列化
        list.stream().forEach(log -> {
            if (StringUtils.isNotBlank(log.getEventDataJson())) {
@@ -163,19 +195,33 @@
                    log.setEventDataObj(delegateData);
                } else if (ProcessLogEventTypeEnum.JUMP.equals(log.getEventType())) {
                    log.setEventDataObj(JSON.parseObject(log.getEventDataJson(), JumpData.class));
                } else if (ProcessLogEventTypeEnum.WAIT.equals(log.getEventType())) {
                    log.setEventDataObj(JSON.parseObject(log.getEventDataJson(), WaitData.class));
                } else if (ProcessLogEventTypeEnum.REJECT.equals(log.getEventType())) {
                    log.setEventDataObj(JSON.parseObject(log.getEventDataJson(), RejectData.class));
                } else if (ProcessLogEventTypeEnum.SUPERVISE.equals(log.getEventType())) {
                    SuperviseData superviseData = JSON.parseObject(log.getEventDataJson(), SuperviseData.class);
                    SysUser user = userService.selectUserById(Long.parseLong(superviseData.getSenderId()));
                    if (Objects.nonNull(user)) {
                        superviseData.setSenderName(user.getNickName() + "(" + (Objects.nonNull(user.getDept()) ? user.getDept().getDeptName() : "无部门") + ")");
                    List<SuperviseData> superviseDataList = JSON.parseArray(log.getEventDataJson(), SuperviseData.class);
                    if (CollectionUtils.isNotEmpty(superviseDataList)) {
                        SysUser user = userService.selectUserById(Long.parseLong(superviseDataList.get(0).getSenderId()));
                        if (Objects.nonNull(user)) {
                            superviseDataList.get(0).setSenderName(user.getNickName() + "(" + (Objects.nonNull(user.getDept()) ? user.getDept().getDeptName() : "无部门") + ")");
                        }
                        log.setEventDataObj(superviseDataList.get(0));
                    }
                    log.setEventDataObj(superviseData);
                } else if (ProcessLogEventTypeEnum.HANGUP.equals(log.getEventType())) {
                    log.setEventDataObj(JSON.parseObject(log.getEventDataJson(), HangupData.class));
                }
            }
        });
        return Result.ok().data(list);
    }
    @Override
    public Result projectProcessLogPage(ProcessLogQuery query) {
        IPage<ProcessLogVO> page = PageUtil.getPage(query, ProcessLogVO.class);
        baseMapper.projectProcessLogPage(page, query);
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
    /**
@@ -193,13 +239,13 @@
            }
        } else if (HandlerTypeEnum.USER.equals(handlerType)) {
            List<SysUser> users = userService.selectUserByIds(ids);
            names = users.stream().map(user -> user.getNickName() + "(" + (Objects.nonNull(user.getDept()) ? user.getDept().getDeptName() : "无部门") + ")").collect(Collectors.toList());
            names.addAll(users.stream().map(user -> user.getNickName() + "(" + (Objects.nonNull(user.getDept()) ? user.getDept().getDeptName() : "无部门") + ")").collect(Collectors.toList()));
        } else if (HandlerTypeEnum.DEPT.equals(handlerType)) {
            List<SysDept> depts = deptService.selectDeptByIds(ids);
            names = depts.stream().map(SysDept::getDeptName).collect(Collectors.toList());
            names.addAll(depts.stream().map(SysDept::getDeptName).collect(Collectors.toList()));
        } else if (HandlerTypeEnum.ROLE.equals(handlerType)) {
            List<SysRole> roles = roleService.selectRoleByIds(ids);
            names = roles.stream().map(SysRole::getRoleName).collect(Collectors.toList());
            names.addAll(roles.stream().map(SysRole::getRoleName).collect(Collectors.toList()));
        }
    }
}