From 8c0f0d672caeb3f41e3ce87e853d0c33fbfe7d47 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期三, 12 二月 2025 17:47:45 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- business/src/main/java/com/ycl/domain/json/RejectData.java | 20 ++++++++++ business/src/main/java/com/ycl/controller/FlowTaskController.java | 1 business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java | 52 ++++++++++++++++++++++--- business/src/main/java/com/ycl/service/IFlowTaskService.java | 0 common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java | 1 5 files changed, 66 insertions(+), 8 deletions(-) diff --git a/flowable/src/main/java/com/ycl/controller/FlowTaskController.java b/business/src/main/java/com/ycl/controller/FlowTaskController.java similarity index 99% rename from flowable/src/main/java/com/ycl/controller/FlowTaskController.java rename to business/src/main/java/com/ycl/controller/FlowTaskController.java index 2232c0f..9eca0d4 100644 --- a/flowable/src/main/java/com/ycl/controller/FlowTaskController.java +++ b/business/src/main/java/com/ycl/controller/FlowTaskController.java @@ -14,7 +14,6 @@ import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.imageio.ImageIO; diff --git a/business/src/main/java/com/ycl/domain/json/RejectData.java b/business/src/main/java/com/ycl/domain/json/RejectData.java new file mode 100644 index 0000000..72acfe0 --- /dev/null +++ b/business/src/main/java/com/ycl/domain/json/RejectData.java @@ -0,0 +1,20 @@ +package com.ycl.domain.json; + +import lombok.Data; + +/** + * 椹冲洖鑷畾涔夋暟鎹� + * + * @author锛歺p + * @date锛�2025/2/12 17:35 + */ +@Data +public class RejectData { + + /** 鍘熷洜/鎰忚 */ + private String reason; + + public RejectData(String reason) { + this.reason = reason; + } +} diff --git a/flowable/src/main/java/com/ycl/service/IFlowTaskService.java b/business/src/main/java/com/ycl/service/IFlowTaskService.java similarity index 100% rename from flowable/src/main/java/com/ycl/service/IFlowTaskService.java rename to business/src/main/java/com/ycl/service/IFlowTaskService.java diff --git a/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java similarity index 96% rename from flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java rename to business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java index e0ff79b..ca2edcc 100644 --- a/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.TypeReference; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ycl.common.constant.ProcessConstants; import com.ycl.common.core.domain.AjaxResult; @@ -13,6 +14,7 @@ import com.ycl.common.core.domain.entity.SysRole; import com.ycl.common.core.domain.entity.SysUser; import com.ycl.common.enums.FlowComment; +import com.ycl.common.enums.business.ProcessLogEventTypeEnum; import com.ycl.common.exception.CustomException; import com.ycl.common.utils.SecurityUtils; import com.ycl.domain.dto.FlowCommentDto; @@ -20,21 +22,25 @@ import com.ycl.domain.dto.FlowTaskDto; import com.ycl.domain.dto.FlowViewerDto; import com.ycl.domain.entity.ProcessCoding; +import com.ycl.domain.entity.ProjectProcess; import com.ycl.domain.entity.SysForm; +import com.ycl.domain.json.RejectData; import com.ycl.domain.vo.FlowQueryVo; import com.ycl.domain.vo.FlowTaskVo; import com.ycl.domain.vo.FormDetailVO; +import com.ycl.event.event.TaskLogEvent; import com.ycl.factory.FlowServiceFactory; import com.ycl.flow.CustomProcessDiagramGenerator; import com.ycl.flow.FindNextNodeUtil; import com.ycl.flow.FlowableUtils; import com.ycl.mapper.ProcessCodingMapper; -import com.ycl.service.ProcessLogService; -import com.ycl.service.IFlowTaskService; -import com.ycl.service.ISysDeployFormService; -import com.ycl.service.ISysFormService; +import com.ycl.mapper.ProjectProcessMapper; +import com.ycl.service.*; import com.ycl.service.common.TaskCommonService; -import com.ycl.system.service.*; +import com.ycl.system.service.ISysDeptService; +import com.ycl.system.service.ISysDictTypeService; +import com.ycl.system.service.ISysRoleService; +import com.ycl.system.service.ISysUserService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -61,6 +67,7 @@ import org.flowable.task.api.TaskQuery; import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.api.history.HistoricTaskInstanceQuery; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -94,6 +101,8 @@ private final TaskCommonService taskCommonService; private final ProcessCodingMapper processCodingMapper; private final ProcessLogService processLogService; + private final ApplicationEventPublisher publisher; + private final ProjectProcessMapper projectProcessMapper; /** * 瀹屾垚瀹℃牳浠诲姟 @@ -133,7 +142,13 @@ if (Objects.isNull(task)) { return AjaxResult.error("浠诲姟涓嶅瓨鍦�"); } - + ProjectProcess projectProcess = new LambdaQueryChainWrapper<>(projectProcessMapper) + .eq(ProjectProcess::getProcessInsId, task.getProcessInstanceId()) + .eq(ProjectProcess::getProcessDefId, task.getProcessDefinitionId()) + .one(); + if (Objects.isNull(projectProcess)) { + return AjaxResult.error("椤圭洰娴佺▼鏈粦瀹�"); + } Map<String, Object> processVariables = new HashMap<>(); //鏌ュ嚭瀛楀吀涓渶瑕佹敞鍏ョ殑瀛楁淇℃伅 List<String> dictList = sysDictDService.selectDictDataByType("flow_variables").stream().map(SysDictData::getDictValue).collect(Collectors.toList()); @@ -157,6 +172,14 @@ taskService.claim(taskId, SecurityUtils.getUserId() + ""); taskService.complete(taskId, newV); } + // 淇濆瓨鏃ュ織 + publisher.publishEvent(new TaskLogEvent(this, null, + SecurityUtils.getUserId(), + projectProcess.getProjectId(), + projectProcess.getProcessInsId(), + taskId, + ProcessLogEventTypeEnum.FINISHED, + null)); return AjaxResult.success("鎻愪氦鎴愬姛"); } @@ -166,6 +189,7 @@ * @param flowTaskVo */ @Override + @Transactional(rollbackFor = Exception.class) public void taskReject(FlowTaskVo flowTaskVo) { if (taskService.createTaskQuery().taskId(flowTaskVo.getTaskId()).singleResult().isSuspended()) { throw new CustomException("浠诲姟澶勪簬鎸傝捣鐘舵��!"); @@ -281,7 +305,21 @@ } catch (FlowableException e) { throw new CustomException("鏃犳硶鍙栨秷鎴栧紑濮嬫椿鍔�"); } - + ProjectProcess projectProcess = new LambdaQueryChainWrapper<>(projectProcessMapper) + .eq(ProjectProcess::getProcessInsId, task.getProcessInstanceId()) + .eq(ProjectProcess::getProcessDefId, task.getProcessDefinitionId()) + .one(); + if (Objects.isNull(projectProcess)) { + throw new CustomException("椤圭洰娴佺▼鏈粦瀹�"); + } + // 淇濆瓨鏃ュ織 + publisher.publishEvent(new TaskLogEvent(this, null, + SecurityUtils.getUserId(), + projectProcess.getProjectId(), + projectProcess.getProcessInsId(), + flowTaskVo.getTaskId(), + ProcessLogEventTypeEnum.REJECT, + new RejectData(flowTaskVo.getComment()))); } /** diff --git a/common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java b/common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java index 05b7a08..c481324 100644 --- a/common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java +++ b/common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java @@ -15,6 +15,7 @@ DELEGATE("DELEGATE", "杞姙"), FINISHED("FINISHED", "瀹屾垚"), + REJECT("REJECT", "椹冲洖"), TEAM_WORK("TEAM_WORK", "鍗忓悓鍔炵悊"), JUMP("JUMP", "璺宠繃"), SUPERVISE("SUPERVISE", "鐫e姙"), -- Gitblit v1.8.0