From f8ce7aa161ef2ef316357ead8208bc60de938ead Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期一, 24 三月 2025 09:36:02 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- flowable/src/main/java/com/ycl/mapper/ProcessLogMapper.java | 5 + business/src/main/java/com/ycl/domain/vo/TaskOrderVO.java | 23 +++++ business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 78 +++++++++++++++++++ flowable/src/main/java/com/ycl/domain/vo/ProcessLogVO.java | 3 business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java | 7 - flowable/src/main/resources/mapper/ProcessLogMapper.xml | 40 +++++++++ business/src/main/java/com/ycl/controller/IndexController.java | 18 ++-- business/src/main/java/com/ycl/service/ProjectProcessService.java | 5 + business/src/main/java/com/ycl/service/ProcessLogService.java | 2 business/src/main/java/com/ycl/controller/FlowLogController.java | 2 flowable/src/main/java/com/ycl/domain/query/ProcessLogQuery.java | 10 ++ business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java | 11 ++ 12 files changed, 182 insertions(+), 22 deletions(-) diff --git a/business/src/main/java/com/ycl/controller/FlowLogController.java b/business/src/main/java/com/ycl/controller/FlowLogController.java index 7ea22a7..81dee74 100644 --- a/business/src/main/java/com/ycl/controller/FlowLogController.java +++ b/business/src/main/java/com/ycl/controller/FlowLogController.java @@ -40,6 +40,6 @@ // @PreAuthorize("@ss.hasPermi('flowLog:page')") public Result projectProcessLogPage(ProcessLogQuery query) { query.setDeleted(null); - return processLogService.projectProcessLogPage(query); + return processLogService.projectProcessLogList(query); } } diff --git a/business/src/main/java/com/ycl/controller/IndexController.java b/business/src/main/java/com/ycl/controller/IndexController.java index 6cb53e6..63739ac 100644 --- a/business/src/main/java/com/ycl/controller/IndexController.java +++ b/business/src/main/java/com/ycl/controller/IndexController.java @@ -1,5 +1,6 @@ package com.ycl.controller; +import com.ycl.common.base.Result; import com.ycl.common.core.controller.BaseController; import com.ycl.common.core.domain.R; import com.ycl.common.core.page.TableDataInfo; @@ -7,6 +8,8 @@ import com.ycl.domain.vo.*; import com.ycl.service.AuditHistoryService; import com.ycl.service.ProjectInfoService; +import com.ycl.service.ProjectProcessService; +import com.ycl.system.domain.base.AbsQuery; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -23,12 +26,9 @@ public class IndexController extends BaseController { - @Autowired - private ProjectInfoService projectInfoService; - - - @Autowired - private AuditHistoryService auditHistoryService; + private final ProjectInfoService projectInfoService; + private final AuditHistoryService auditHistoryService; + private final ProjectProcessService projectProcessService; /** * 椤圭洰鏁伴噺缁熻 @@ -74,10 +74,8 @@ * 娑堟伅鏉℃暟 */ @GetMapping("/message-count") - public R<IndexMsgCountVO> messageCount() { - IndexMsgCountVO vo = new IndexMsgCountVO(); - vo.setAuditCount(0L); - return R.ok(vo); + public Result messageCount(AbsQuery query) { + return projectProcessService.getProcessMsg(query); } /** diff --git a/business/src/main/java/com/ycl/domain/vo/TaskOrderVO.java b/business/src/main/java/com/ycl/domain/vo/TaskOrderVO.java new file mode 100644 index 0000000..dfd0863 --- /dev/null +++ b/business/src/main/java/com/ycl/domain/vo/TaskOrderVO.java @@ -0,0 +1,23 @@ +package com.ycl.domain.vo; + +import lombok.Data; + +/** + * @author锛歺p + * @date锛�2025/3/23 10:48 + */ +@Data +public class TaskOrderVO { + + private String taskId; + + /** + * 鎺掑簭鍊� + */ + private Long num; + + /** + * 鍓╀綑鏃堕棿 + */ + private String remaingTime; +} diff --git a/business/src/main/java/com/ycl/service/ProcessLogService.java b/business/src/main/java/com/ycl/service/ProcessLogService.java index 9c7141e..60e7f10 100644 --- a/business/src/main/java/com/ycl/service/ProcessLogService.java +++ b/business/src/main/java/com/ycl/service/ProcessLogService.java @@ -111,5 +111,7 @@ * @param query * @return */ + Result projectProcessLogList(ProcessLogQuery query); + Result projectProcessLogPage(ProcessLogQuery query); } diff --git a/business/src/main/java/com/ycl/service/ProjectProcessService.java b/business/src/main/java/com/ycl/service/ProjectProcessService.java index 1c29cf5..f56d3db 100644 --- a/business/src/main/java/com/ycl/service/ProjectProcessService.java +++ b/business/src/main/java/com/ycl/service/ProjectProcessService.java @@ -1,5 +1,6 @@ package com.ycl.service; +import com.ycl.common.core.domain.R; import com.ycl.domain.entity.ProjectProcess; import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.common.base.Result; @@ -7,6 +8,8 @@ import com.ycl.domain.query.ProjectProcessQuery; import com.ycl.domain.query.TaskQuery; import com.ycl.domain.vo.CustomerTaskVO; +import com.ycl.domain.vo.IndexMsgCountVO; +import com.ycl.system.domain.base.AbsQuery; import java.util.List; @@ -142,4 +145,6 @@ * @return */ Result taskTeamwork(TaskTeamWorkForm form); + + Result getProcessMsg(AbsQuery query); } diff --git a/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java index 47599e1..af1da78 100644 --- a/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java @@ -73,7 +73,6 @@ import org.flowable.task.api.history.HistoricTaskInstanceQuery; import org.springframework.beans.BeanUtils; import org.springframework.context.ApplicationEventPublisher; -import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -1478,7 +1477,7 @@ ProcessLogQuery query = new ProcessLogQuery(); query.setTaskId(node.getTaskId()); query.setProcessInsId(finalProcessInsId); - Result result = processLogService.projectProcessLogPage(query); + Result result = processLogService.projectProcessLogList(query); List<ProcessLogVO> logList = (List<ProcessLogVO>) result.get("data"); DoFormDetailVO vo = new DoFormDetailVO(); BeanUtils.copyProperties(node, vo); @@ -1557,7 +1556,7 @@ ProcessLogQuery query = new ProcessLogQuery(); query.setTaskId(node.getTaskId()); query.setProcessInsId(hisTask.getProcessInstanceId()); - Result result = processLogService.projectProcessLogPage(query); + Result result = processLogService.projectProcessLogList(query); List<ProcessLogVO> logList = (List<ProcessLogVO>) result.get("data"); DoFormDetailVO vo = new DoFormDetailVO(); BeanUtils.copyProperties(node, vo); @@ -1628,7 +1627,7 @@ ProcessLogQuery query = new ProcessLogQuery(); query.setTaskId(node.getTaskId()); query.setProcessInsId(processInsId); - Result result = processLogService.projectProcessLogPage(query); + Result result = processLogService.projectProcessLogList(query); List<ProcessLogVO> logList = (List<ProcessLogVO>) result.get("data"); DoFormDetailVO vo = new DoFormDetailVO(); BeanUtils.copyProperties(node, vo); diff --git a/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java index 306abc1..5b075c8 100644 --- a/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java @@ -180,8 +180,8 @@ } @Override - public Result projectProcessLogPage(ProcessLogQuery query) { - List<ProcessLogVO> list = baseMapper.projectProcessLogPage(query); + public Result projectProcessLogList(ProcessLogQuery query) { + List<ProcessLogVO> list = baseMapper.projectProcessLogList(query); // json鍙嶅簭鍒楀寲 list.stream().forEach(log -> { if (StringUtils.isNotBlank(log.getEventDataJson())) { @@ -217,6 +217,13 @@ 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()); + } + /** * 瑙f瀽娴佺▼鏃ュ織涓殑鏁版嵁-鍚嶇О * diff --git a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java index 0c283e6..8c62e67 100644 --- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java @@ -18,6 +18,7 @@ import com.ycl.domain.entity.*; import com.ycl.domain.form.*; import com.ycl.domain.json.*; +import com.ycl.domain.query.ProcessLogQuery; import com.ycl.domain.vo.*; import com.ycl.event.event.TaskLogEvent; import com.ycl.mapper.ProjectEngineeringMapper; @@ -28,6 +29,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.domain.query.ProjectProcessQuery; import com.ycl.service.common.TaskCommonService; +import com.ycl.system.domain.base.AbsQuery; import com.ycl.system.service.ISysDeptService; import com.ycl.system.service.ISysDictTypeService; import com.ycl.system.service.ISysRoleService; @@ -378,7 +380,50 @@ .endOr(); } result.total(taskQuery.count()); - List<Task> taskList = taskQuery.listPage(pageSize * (pageNum - 1), pageSize); + List<Task> allTodoList = taskQuery.list(); + List<TaskOrderVO> orderList = new ArrayList<>(); + allTodoList.stream().forEach(task -> { + TaskOrderVO order = new TaskOrderVO(); + order.setTaskId(task.getId()); + // 璁$畻鍔炵悊鏃堕棿锛岃秴鏃剁殑鎺掑墠闈紝娌¤秴鏃剁殑鐢变綆鍒伴珮鎺掑簭锛屾病瓒呮椂鏃堕棿鐨勬帓鏈�鍚� + ProcessCoding processCoding = processCodingService.getByTaskId(task.getId(), task.getProcessInstanceId()); + if (Objects.nonNull(processCoding)) { + if (StringUtils.isNotBlank(processCoding.getRedTime())) { + Long overtime = getTime(processCoding.getRedTime()); + long durationTime = 0l; + if (Objects.nonNull(processCoding.getStartTaskTime())) { + durationTime = ((new Date()).getTime() - processCoding.getStartTaskTime().getTime()) / 1000; + } + if (overtime > durationTime) { + order.setNum((overtime - durationTime) / 3600); + } else { + order.setNum(-2000000L); + } + } else { + order.setNum(2000000L); + } + } else { + order.setNum(2000000L); + } + orderList.add(order); + }); + // 鍗囧簭鎺掑垪 + Collections.sort(orderList, Comparator.comparingLong(TaskOrderVO::getNum)); + int startNum = pageSize * (pageNum - 1); + int endNum = startNum + pageSize; + if (startNum >= orderList.size()) { + result.data(new ArrayList<>()).total(0L); + return; + } + int end = Math.min(endNum, orderList.size()); + List<String> targetTaskIds = orderList.subList(startNum, end).stream().map(TaskOrderVO::getTaskId).collect(Collectors.toList()); + List<Task> taskList = targetTaskIds.stream().map(taskId -> { + List<Task> list = allTodoList.stream().filter(task -> task.getId().equals(taskId)).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(list)) { + return null; + } + return list.get(0); + }).filter(Objects::nonNull).collect(Collectors.toList()); List<IndexCustomerTaskVO> vos = new ArrayList<>(); for (Task task : taskList) { IndexCustomerTaskVO taskVO = new IndexCustomerTaskVO(); @@ -923,6 +968,37 @@ return Result.ok("鎿嶄綔鎴愬姛"); } + @Override + public Result getProcessMsg(AbsQuery q) { + // 鏌ヨ嚜宸辩殑鏃ュ織 + ProcessLogQuery query = new ProcessLogQuery(); + if (! SecurityUtils.isAdmin(SecurityUtils.getUserId())) { + query.setUserId(SecurityUtils.getUserId()); + } + query.setEventTypeList(Arrays.asList(ProcessLogEventTypeEnum.DELEGATE.getValue(), + ProcessLogEventTypeEnum.REJECT.getValue(), + ProcessLogEventTypeEnum.JUMP.getValue(), + ProcessLogEventTypeEnum.FINISHED.getValue(), + ProcessLogEventTypeEnum.WAIT.getValue())); + query.setCurrentPage(q.getCurrentPage()); + query.setPageSize(q.getPageSize()); + Result result = processLogService.projectProcessLogPage(query); + List<ProcessLogVO> logs = (List<ProcessLogVO>) result.get("data"); + + logs.stream().forEach(log -> { + if (ProcessLogEventTypeEnum.FINISHED.equals(log.getEventType())) { + log.setContent("鎮ㄥ畬鎴愪簡浠诲姟锛�" + log.getTaskName()); + } else if (ProcessLogEventTypeEnum.REJECT.equals(log.getEventType())) { + log.setContent("鎮ㄩ┏鍥炰簡浠诲姟锛�" + log.getTaskName()); + } else if (ProcessLogEventTypeEnum.WAIT.equals(log.getEventType())) { + log.setContent("鎮ㄥ缂轰簡浠诲姟锛�" + log.getTaskName()); + } else if (ProcessLogEventTypeEnum.JUMP.equals(log.getEventType())) { + log.setContent("鎮ㄨ烦杩囦簡浠诲姟锛�" + log.getTaskName()); + } + }); + return Result.ok().data(logs).total((Long) result.get("total")); + } + /** * 鏌ヨ寰呭姙浠诲姟 * diff --git a/flowable/src/main/java/com/ycl/domain/query/ProcessLogQuery.java b/flowable/src/main/java/com/ycl/domain/query/ProcessLogQuery.java index cc071bb..7a295a4 100644 --- a/flowable/src/main/java/com/ycl/domain/query/ProcessLogQuery.java +++ b/flowable/src/main/java/com/ycl/domain/query/ProcessLogQuery.java @@ -43,5 +43,15 @@ * 閫昏緫鍒犻櫎 */ private Integer deleted = 0; + + /** + * 鏌ヨ皝鐨� + */ + private Long userId; + + /** + * 鏌ュ摢绉嶇被鍨嬬殑鏃ュ織 + */ + private List<String> eventTypeList; } diff --git a/flowable/src/main/java/com/ycl/domain/vo/ProcessLogVO.java b/flowable/src/main/java/com/ycl/domain/vo/ProcessLogVO.java index 8448514..a0b4b54 100644 --- a/flowable/src/main/java/com/ycl/domain/vo/ProcessLogVO.java +++ b/flowable/src/main/java/com/ycl/domain/vo/ProcessLogVO.java @@ -52,6 +52,9 @@ @ApiModelProperty("json杞崲鍚庣殑瀵硅薄") private Object eventDataObj; + @ApiModelProperty("鍐呭") + private String content; + public static ProcessLogVO getVoByEntity(@NonNull ProcessLog entity, ProcessLogVO vo) { if(vo == null) { vo = new ProcessLogVO(); diff --git a/flowable/src/main/java/com/ycl/mapper/ProcessLogMapper.java b/flowable/src/main/java/com/ycl/mapper/ProcessLogMapper.java index 822cef5..74c1a29 100644 --- a/flowable/src/main/java/com/ycl/mapper/ProcessLogMapper.java +++ b/flowable/src/main/java/com/ycl/mapper/ProcessLogMapper.java @@ -37,7 +37,10 @@ * @param query * @return */ - List<ProcessLogVO> projectProcessLogPage(@Param("query") ProcessLogQuery query); + List<ProcessLogVO> projectProcessLogList(@Param("query") ProcessLogQuery query); + + + IPage projectProcessLogPage(IPage page, @Param("query") ProcessLogQuery query); List<String> getAllHangup(); diff --git a/flowable/src/main/resources/mapper/ProcessLogMapper.xml b/flowable/src/main/resources/mapper/ProcessLogMapper.xml index c638af4..881e51d 100644 --- a/flowable/src/main/resources/mapper/ProcessLogMapper.xml +++ b/flowable/src/main/resources/mapper/ProcessLogMapper.xml @@ -55,8 +55,38 @@ TFL.deleted = 0 </select> - <select id="projectProcessLogPage" resultMap="BaseResultMap"> + SELECT + TFL.task_id, + TFL.task_name, + TFL.event_type, + TFL.project_id, + TFL.process_ins_id, + TFL.user_id, + CONCAT(SU.nick_name, '(',COALESCE(SD.dept_name, '鏃犻儴闂�'), ')') as nick_name, + TFL.event_data_json, + TFL.gmt_create, + TFL.id + FROM + t_process_log TFL + LEFT JOIN sys_user SU ON SU.user_id = TFL.user_id + LEFT JOIN sys_dept SD ON SU.dept_id = SD.dept_id + <where> + <if test="query.deleted != null">AND TFL.deleted = #{query.deleted}</if> + <if test="query.userId != null">AND TFL.user_id = #{query.userId}</if> + <if test="query.processInsId != null and query.processInsId != ''">AND TFL.process_ins_id = #{query.processInsId}</if> + <if test="query.taskId != null and query.taskId != ''">AND TFL.task_id = #{query.taskId}</if> + <if test="query.projectId != null and query.projectId != ''">AND TFL.project_id = #{query.projectId}</if> + <if test="query.taskDefKey != null and query.taskDefKey != ''">AND TFL.task_def_key = #{query.taskDefKey}</if> + <if test="query.eventTypeList != null and query.eventTypeList.size > 0"> + AND TFL.event_type IN <foreach collection="query.eventTypeList" open="(" separator="," close=")" item="eventType">#{eventType}</foreach> + </if> + </where> + ORDER BY + TFL.gmt_create DESC + </select> + + <select id="projectProcessLogList" resultMap="BaseResultMap"> SELECT TFL.task_id, TFL.task_name, @@ -73,11 +103,15 @@ LEFT JOIN sys_user SU ON SU.user_id = TFL.user_id LEFT JOIN sys_dept SD ON SU.dept_id = SD.dept_id <where> - <if test="query.deleted != null">TFL.deleted = #{query.deleted}</if> - AND TFL.process_ins_id = #{query.processInsId} + <if test="query.deleted != null">AND TFL.deleted = #{query.deleted}</if> + <if test="query.userId != null">AND TFL.user_id = #{query.userId}</if> + <if test="query.processInsId != null and query.processInsId != ''">AND TFL.process_ins_id = #{query.processInsId}</if> <if test="query.taskId != null and query.taskId != ''">AND TFL.task_id = #{query.taskId}</if> <if test="query.projectId != null and query.projectId != ''">AND TFL.project_id = #{query.projectId}</if> <if test="query.taskDefKey != null and query.taskDefKey != ''">AND TFL.task_def_key = #{query.taskDefKey}</if> + <if test="query.eventTypeList != null and query.eventTypeList.size > 0"> + AND TFL.event_type IN <foreach collection="query.eventTypeList" open="(" separator="," close=")" item="eventType">#{eventType}</foreach> + </if> </where> ORDER BY TFL.gmt_create DESC -- Gitblit v1.8.0