From 80662b34fe93b4ede00c7fc03fbd9f01355c94e2 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期一, 07 四月 2025 13:52:17 +0800 Subject: [PATCH] 修改任务接口 --- business/src/main/resources/mapper/ProjectProcessMapper.xml | 12 + business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 206 +++++++++++++++++++++++++++++ business/src/main/java/com/ycl/controller/FlowTaskController.java | 15 ++ business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java | 71 +++++++++ business/src/main/java/com/ycl/controller/ProjectProcessController.java | 10 + business/src/main/java/com/ycl/service/ProjectProcessService.java | 9 + business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java | 22 +++ business/src/main/java/com/ycl/domain/form/EditFinishedTaskForm.java | 41 +++++ business/src/main/java/com/ycl/service/IFlowTaskService.java | 10 + common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java | 1 10 files changed, 391 insertions(+), 6 deletions(-) diff --git a/business/src/main/java/com/ycl/controller/FlowTaskController.java b/business/src/main/java/com/ycl/controller/FlowTaskController.java index b4a24ac..34d2fe1 100644 --- a/business/src/main/java/com/ycl/controller/FlowTaskController.java +++ b/business/src/main/java/com/ycl/controller/FlowTaskController.java @@ -5,6 +5,7 @@ import com.ycl.common.core.domain.AjaxResult; import com.ycl.common.enums.BusinessType; import com.ycl.domain.dto.FlowTaskDto; +import com.ycl.domain.form.EditFinishedTaskForm; import com.ycl.domain.vo.FlowQueryVo; import com.ycl.domain.vo.FlowTaskVo; import com.ycl.domain.vo.FormDetailVO; @@ -126,6 +127,7 @@ public AjaxResult complete(@RequestBody FlowTaskVo flowTaskVo) { return flowTaskService.complete(flowTaskVo); } + @ApiOperation(value = "椹冲洖浠诲姟") @Log(title = "椹冲洖浠诲姟", businessType = BusinessType.UPDATE) @@ -275,7 +277,7 @@ } /** - * 娴佺▼鑺傜偣琛ㄥ崟 + * 娴佺▼鑺傜偣琛ㄥ崟-褰撳墠浠诲姟鍙婂墠缃换鍔� * * @param taskId 娴佺▼浠诲姟缂栧彿 * @return @@ -285,6 +287,17 @@ return flowTaskService.flowTaskForm(taskId); } + /** + * 娴佺▼鑺傜偣琛ㄥ崟-褰撳墠浠诲姟 + * + * @param taskId 娴佺▼浠诲姟缂栧彿 + * @return + */ + @GetMapping("/current/flowTaskForm") + public AjaxResult currentFlowTaskForm(@RequestParam(value = "taskId", required = false) String taskId) { + return flowTaskService.currentFlowTaskForm(taskId); + } + /** * 娴佺▼鑺傜偣淇℃伅 diff --git a/business/src/main/java/com/ycl/controller/ProjectProcessController.java b/business/src/main/java/com/ycl/controller/ProjectProcessController.java index 8e40347..1e1644d 100644 --- a/business/src/main/java/com/ycl/controller/ProjectProcessController.java +++ b/business/src/main/java/com/ycl/controller/ProjectProcessController.java @@ -1,5 +1,8 @@ package com.ycl.controller; +import com.ycl.common.annotation.Log; +import com.ycl.common.core.domain.AjaxResult; +import com.ycl.common.enums.BusinessType; import com.ycl.common.group.Update; import com.ycl.common.group.Add; import com.ycl.domain.form.*; @@ -156,4 +159,11 @@ public Result cancelTaskHangup(@Validated @RequestBody TaskHangupForm form) { return projectProcessService.cancelTaskHangup(form); } + + @ApiOperation(value = "淇敼宸插畬鎴愪换鍔�") + @Log(title = "淇敼宸插畬鎴愪换鍔�", businessType = BusinessType.UPDATE) + @PostMapping(value = "/admin/edit/finish/task") + public Result editFinishedTask(@RequestBody EditFinishedTaskForm form) { + return projectProcessService.editFinishedTask(form); + } } diff --git a/business/src/main/java/com/ycl/domain/form/EditFinishedTaskForm.java b/business/src/main/java/com/ycl/domain/form/EditFinishedTaskForm.java new file mode 100644 index 0000000..bb0557f --- /dev/null +++ b/business/src/main/java/com/ycl/domain/form/EditFinishedTaskForm.java @@ -0,0 +1,41 @@ +package com.ycl.domain.form; + +import com.ycl.common.enums.business.TaskStatusEnum; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * <p>娴佺▼浠诲姟<p> + * + * @author Tony + * @date 2021-04-03 + */ +@Data +@ApiModel("宸ヤ綔娴佷换鍔$浉鍏�--璇锋眰鍙傛暟") +public class EditFinishedTaskForm { + + @ApiModelProperty("褰撳墠浠诲姟Id") + private String taskId; + + @ApiModelProperty("鐢ㄦ埛Id") + private String userId; + + @ApiModelProperty("娴佺▼鍙橀噺淇℃伅") + private Map<String, Object> variables; + + @ApiModelProperty("鍘熷厛鐨勪换鍔$姸鎬�") + private TaskStatusEnum originalStatus; + + @ApiModelProperty("鐜板湪鐨勪换鍔$姸鎬�") + private TaskStatusEnum nowStatus; + + @ApiModelProperty("璺宠繃") + private TaskJumpForm taskJumpForm; + + @ApiModelProperty("瀹圭己") + private TaskWaitForm taskWaitForm; +} diff --git a/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java b/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java index dbb9c38..14bf19d 100644 --- a/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java +++ b/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java @@ -83,4 +83,26 @@ * @param objectToBytes */ void insertByteArray(@Param("id_") String bytearray_id_, @Param("rev_") int rev_, @Param("name_") String name_, @Param("bytes_") Object objectToBytes); + + + /** + * 鍒犻櫎浜岃繘鍒跺彉閲� + * + * @param id + */ + void deleteByteArray(@Param("id") String id); + + /** + * 鍒犻櫎杩愯鏃剁殑flowable鍙橀噺 + * + * @param id + */ + void deleteRunFlowableVar(@Param("id") String id); + + /** + * 鍒犻櫎鍘嗗彶鐨刦lowable鍙橀噺 + * + * @param id + */ + void deleteHisFlowableVar(@Param("id") String id); } diff --git a/business/src/main/java/com/ycl/service/IFlowTaskService.java b/business/src/main/java/com/ycl/service/IFlowTaskService.java index fab464a..8871989 100644 --- a/business/src/main/java/com/ycl/service/IFlowTaskService.java +++ b/business/src/main/java/com/ycl/service/IFlowTaskService.java @@ -1,6 +1,7 @@ package com.ycl.service; import com.ycl.common.core.domain.AjaxResult; +import com.ycl.domain.form.EditFinishedTaskForm; import com.ycl.domain.vo.FlowQueryVo; import com.ycl.domain.vo.FlowTaskVo; @@ -207,6 +208,14 @@ */ AjaxResult flowTaskForm(String taskId) throws Exception; + /** + * 褰撳墠浠诲姟鐨勮〃鍗曟暟鎹� + * + * @param taskId + * @return + */ + AjaxResult currentFlowTaskForm(String taskId); + /** * 娴佺▼鑺傜偣淇℃伅 @@ -237,4 +246,5 @@ * @return */ AjaxResult detail(String processInsId, String taskId); + } diff --git a/business/src/main/java/com/ycl/service/ProjectProcessService.java b/business/src/main/java/com/ycl/service/ProjectProcessService.java index 31b41fb..9803243 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.AjaxResult; import com.ycl.common.core.domain.R; import com.ycl.domain.entity.ProjectProcess; import com.baomidou.mybatisplus.extension.service.IService; @@ -157,4 +158,12 @@ * @param result */ void getIndexWaitTask(String s, int pageSize, int currentPage, Result result); + + /** + * 淇敼宸插畬鎴愮殑浠诲姟 + * + * @param vo + * @return + */ + Result editFinishedTask(EditFinishedTaskForm vo); } 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 af1da78..b1133be 100644 --- a/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java @@ -28,6 +28,7 @@ import com.ycl.domain.entity.ProcessLog; import com.ycl.domain.entity.ProjectProcess; import com.ycl.domain.entity.SysForm; +import com.ycl.domain.form.EditFinishedTaskForm; import com.ycl.domain.json.RejectData; import com.ycl.domain.query.ProcessLogQuery; import com.ycl.domain.vo.*; @@ -190,6 +191,7 @@ } return AjaxResult.success("鎻愪氦鎴愬姛"); } + /** * 瀹圭己琛ヤ氦 @@ -1411,6 +1413,58 @@ } /** + * 鏌ヨ褰撳墠浠诲姟鐨勮〃鍗曟暟鎹� + * + * @param taskId + * @return + * @throws Exception + */ + @Override + public AjaxResult currentFlowTaskForm(String taskId) { + // 娴佺▼鍙橀噺 + List<HistoricTaskInstance> hisTaskList = historyService.createHistoricTaskInstanceQuery() + .includeProcessVariables() + .finished() + .taskId(taskId) + .orderByHistoricTaskInstanceStartTime() + .desc() + .list(); + if (CollectionUtils.isEmpty(hisTaskList) || Objects.isNull(hisTaskList.get(0))) { + return AjaxResult.error("鏈壘鍒拌浠诲姟淇℃伅"); + } + HistoricTaskInstance historicTaskInstance = hisTaskList.get(0); + Map<String, Object> parameters = historicTaskInstance.getProcessVariables(); + String processInsId = historicTaskInstance.getProcessInstanceId(); + List<FormDetailVO> beforeNodes = this.getBeforeNodeForm(parameters, historicTaskInstance.getFormKey(), historicTaskInstance.getName(), historicTaskInstance.getProcessDefinitionId(), historicTaskInstance.getTaskDefinitionKey(), Boolean.FALSE); + // 鍒ゆ柇鍓嶇疆浠诲姟鏄笉鏄拰褰撳墠浠诲姟涓哄悓涓�涓猠xecuteId + // 鍒ゆ柇褰撳墠浠诲姟鏄惁琚寕璧蜂腑 + String finalProcessInsId = processInsId; + + List<DoFormDetailVO> vos = beforeNodes.stream() + .filter(FormDetailVO::getCurrent) + .map(node -> { + if (node.getCurrent()) { + if (processLogService.taskIsHangup(taskId, finalProcessInsId)) { + node.setTaskStatus(TaskStatusEnum.HANGUP); + } + } + // 鍒ゆ柇浠诲姟鏄惁瀛樺湪鐗规畩鎿嶄綔(濡傝烦杩囥�佽浆鍔炵瓑)锛岄渶瑕佸湪鍓嶇灞曠ず鍑烘潵 + ProcessLogQuery query = new ProcessLogQuery(); + query.setTaskId(node.getTaskId()); + query.setProcessInsId(finalProcessInsId); + Result result = processLogService.projectProcessLogList(query); + List<ProcessLogVO> logList = (List<ProcessLogVO>) result.get("data"); + DoFormDetailVO vo = new DoFormDetailVO(); + BeanUtils.copyProperties(node, vo); + if (CollectionUtils.isNotEmpty(logList)) { + vo.setEvents(logList); + } + return vo; + }).collect(Collectors.toList()); + return AjaxResult.success(vos.get(0)); + } + + /** * 娴佺▼鑺傜偣琛ㄥ崟 * * @param taskId 娴佺▼浠诲姟缂栧彿 @@ -1423,11 +1477,17 @@ Map<String, Object> parameters = new HashMap<>(); List<FormDetailVO> beforeNodes = new ArrayList<>(); String processInsId = ""; - HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().includeProcessVariables().finished().taskId(taskId).singleResult(); - if (Objects.nonNull(historicTaskInstance)) { - parameters = historicTaskInstance.getProcessVariables(); - processInsId = historicTaskInstance.getProcessInstanceId(); - beforeNodes = this.getBeforeNodeForm(parameters, historicTaskInstance.getFormKey(), historicTaskInstance.getName(), historicTaskInstance.getProcessDefinitionId(), historicTaskInstance.getTaskDefinitionKey(), Boolean.FALSE); + List<HistoricTaskInstance> hisTaskList = historyService.createHistoricTaskInstanceQuery() + .includeProcessVariables() + .finished() + .taskId(taskId) + .orderByHistoricTaskInstanceStartTime() + .desc() + .list(); + if (CollectionUtils.isNotEmpty(hisTaskList) && Objects.nonNull(hisTaskList.get(0))) { + parameters = hisTaskList.get(0).getProcessVariables(); + processInsId = hisTaskList.get(0).getProcessInstanceId(); + beforeNodes = this.getBeforeNodeForm(parameters, hisTaskList.get(0).getFormKey(), hisTaskList.get(0).getName(), hisTaskList.get(0).getProcessDefinitionId(), hisTaskList.get(0).getTaskDefinitionKey(), Boolean.FALSE); } else { parameters = taskService.getVariables(taskId); processInsId = task.getProcessInstanceId(); @@ -1717,6 +1777,7 @@ return beforeNodes; } + /** * 娴佺▼鑺傜偣淇℃伅 * 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 c4fdcc2..4ac381a 100644 --- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.ycl.common.constant.ProcessConstants; import com.ycl.common.constant.ProcessOverTimeConstants; +import com.ycl.common.core.domain.AjaxResult; import com.ycl.common.core.domain.entity.SysDept; import com.ycl.common.core.domain.entity.SysDictData; import com.ycl.common.core.domain.entity.SysRole; @@ -40,6 +41,7 @@ import org.apache.commons.lang3.StringUtils; import org.flowable.bpmn.model.*; import org.flowable.bpmn.model.Process; +import org.flowable.common.engine.impl.persistence.StrongUuidGenerator; import org.flowable.common.engine.impl.util.CollectionUtil; import org.flowable.engine.*; import org.flowable.engine.history.HistoricProcessInstance; @@ -53,6 +55,7 @@ import org.flowable.task.api.TaskQuery; import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.api.history.HistoricTaskInstanceQuery; +import org.springframework.beans.BeanUtils; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; @@ -2929,4 +2932,207 @@ private List<Task> getCurrentNodeTaskList(String processInstanceId) { return taskService.createTaskQuery().processDefinitionId(processInstanceId).list(); } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result editFinishedTask(EditFinishedTaskForm form) { + List<HistoricTaskInstance> hisTasks = historyService.createHistoricTaskInstanceQuery().taskId(form.getTaskId()).orderByHistoricTaskInstanceStartTime().desc().list(); + if (org.apache.commons.collections4.CollectionUtils.isEmpty(hisTasks) || Objects.isNull(hisTasks.get(0))) { + return Result.error("浠诲姟涓嶅瓨鍦�"); + } + HistoricTaskInstance task = hisTasks.get(0); + ProjectProcess projectProcess = new LambdaQueryChainWrapper<>(projectProcessMapper) + .eq(ProjectProcess::getProcessInsId, task.getProcessInstanceId()) + .eq(ProjectProcess::getProcessDefId, task.getProcessDefinitionId()) + .one(); + if (Objects.isNull(projectProcess)) { + return Result.error("椤圭洰娴佺▼鏈粦瀹�"); + } + // 鏌ュ嚭瀛楀吀涓渶瑕佹敞鍏ョ殑瀛楁淇℃伅 + List<String> dictList = dictTypeService.selectDictDataByType("flow_variables").stream().map(SysDictData::getDictValue).collect(Collectors.toList()); + Map<String, Object> newV = new HashMap<>(2); + if (!org.springframework.util.CollectionUtils.isEmpty(form.getVariables())) { + for (String key : form.getVariables().keySet()) { + newV.put(task.getTaskDefinitionKey() + "&" + key, form.getVariables().get(key)); + // 瀛楀吀閲屾湁灏变笉鍋氬鐞� + if (!org.apache.commons.collections4.CollectionUtils.isEmpty(dictList) && dictList.contains(key)) { + newV.put(key,form.getVariables().get(key)); + } + } + } + ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult(); + Date now = new Date(); + + // 1. 琛ㄥ崟鍙橀噺鏇挎崲 + for (String key : newV.keySet()) { + FlowableVarVO var = null; + if (Objects.isNull(processInstance)) { + // 鏌ヨ鍘嗗彶娴佺▼鍙橀噺 + var = projectProcessMapper.getHisByteId(projectProcess.getProcessInsId(), key); + } else { + // 鏌ヨ杩愯鏃舵祦绋嬪彉閲� + var = projectProcessMapper.getRuByteId(projectProcess.getProcessInsId(), key); + } + if (Objects.nonNull(var)) { + // 鍏堝垹闄ゅ師鏉ョ殑鍙橀噺锛屽啀鎶婂綋鍓嶇殑淇濆瓨杩涘幓 + projectProcessMapper.deleteHisFlowableVar(var.getID_()); + projectProcessMapper.deleteRunFlowableVar(var.getID_()); + if (StringUtils.isNotBlank(var.getBYTEARRAY_ID_())) { + projectProcessMapper.deleteByteArray(var.getID_()); + } + } + + // 淇濆瓨褰撳墠鐨勮〃鍗曟暟鎹� + FlowableVarVO run = new FlowableVarVO(); + FlowableVarVO v = new FlowableVarVO(); + v.setNAME_(key); + v.setPROC_INST_ID_(task.getProcessInstanceId()); + v.setEXECUTION_ID_(task.getProcessInstanceId()); + v.setCREATE_TIME_(now); + v.setLAST_UPDATED_TIME_(now); + v.setID_(new StrongUuidGenerator().getNextId()); + + BeanUtils.copyProperties(v, run); + run.setID_(new StrongUuidGenerator().getNextId()); + if (newV.get(key) instanceof String) { + v.setVAR_TYPE_("string"); + v.setTEXT_((String) newV.get(key)); + run.setVAR_TYPE_("string"); + run.setTEXT_((String) newV.get(key)); + } else if (newV.get(key) instanceof Integer) { + v.setVAR_TYPE_("integer"); + v.setLONG_((Long) newV.get(key)); + v.setTEXT_((String) newV.get(key)); + run.setVAR_TYPE_("integer"); + run.setLONG_((Long) newV.get(key)); + run.setTEXT_((String) newV.get(key)); + } else if (newV.get(key) instanceof Long) { + v.setVAR_TYPE_("long"); + v.setLONG_((Long) newV.get(key)); + v.setTEXT_((String) newV.get(key)); + run.setVAR_TYPE_("long"); + run.setLONG_((Long) newV.get(key)); + run.setTEXT_((String) newV.get(key)); + } else if (newV.get(key) instanceof Boolean) { + v.setVAR_TYPE_("boolean"); + v.setLONG_((Long) newV.get(key)); + v.setTEXT_((String) newV.get(key)); + run.setVAR_TYPE_("boolean"); + run.setLONG_((Long) newV.get(key)); + run.setTEXT_((String) newV.get(key)); + } else { + // 鍏跺畠绫诲瀷鐨勮〃鍗曟暟鎹細濡傚浘鐗囥�佹枃浠跺崟鐙瓨琛ㄧ殑銆傚巻鍙层�佽繍琛屼腑鐨勬祦绋嬮渶鍚勫瓨涓�浠� + v.setVAR_TYPE_("serializable"); + v.setBYTEARRAY_ID_(new StrongUuidGenerator().getNextId()); + projectProcessMapper.insertByteArray(v.getBYTEARRAY_ID_(), 1, "hist.var-" + key, newV.get(key)); + + run.setVAR_TYPE_("serializable"); + run.setBYTEARRAY_ID_(new StrongUuidGenerator().getNextId()); + projectProcessMapper.insertByteArray(run.getBYTEARRAY_ID_(), 1, "var-" + key, newV.get(key)); + } + + projectProcessMapper.insertHisFlowableVar(v); + projectProcessMapper.insertRunFlowableVar(run); + + } + // 2. 浠诲姟鐘舵�佽皟鏁达細浠呮敮鎸� 宸插畬鎴�==銆嬪缂�/璺宠繃 瀹圭己銆�===銆嬭烦杩� + if (Objects.nonNull(form.getNowStatus()) && ! Objects.equals(form.getOriginalStatus(), form.getNowStatus())) { + if (TaskStatusEnum.FINISHED.equals(form.getOriginalStatus())) { + ProcessLog finishedLog = new LambdaQueryChainWrapper<>(processLogService.getBaseMapper()) + .eq(ProcessLog::getTaskId, form.getTaskId()) + .eq(ProcessLog::getEventType, ProcessLogEventTypeEnum.FINISHED) + .one(); + if (Objects.nonNull(finishedLog)) { + if (TaskStatusEnum.JUMP.equals(form.getNowStatus())) { + // 娣诲姞璺宠繃鏃ュ織 + publisher.publishEvent(new TaskLogEvent(this, null, + finishedLog.getUserId(), + projectProcess.getProjectId(), + projectProcess.getProcessInsId(), + form.getTaskId(), + task.getTaskDefinitionKey(), + task.getName(), + ProcessLogEventTypeEnum.JUMP, + new JumpData(form.getTaskJumpForm().getDesc()))); + // 鍒犻櫎鍘熸潵鐨勫畬鎴愭棩蹇� + processLogService.removeById(finishedLog.getId()); + } else if (TaskStatusEnum.WAIT.equals(form.getNowStatus())) { + // 娣诲姞瀹圭己鏃ュ織 + publisher.publishEvent(new TaskLogEvent(this, null, + finishedLog.getUserId(), + projectProcess.getProjectId(), + projectProcess.getProcessInsId(), + form.getTaskId(), + task.getTaskDefinitionKey(), + task.getName(), + ProcessLogEventTypeEnum.WAIT, + new WaitData(form.getTaskWaitForm().getDesc()))); + // 鍒犻櫎鍘熸潵鐨勫畬鎴愭棩蹇� + processLogService.removeById(finishedLog.getId()); + } else { + return Result.error("宸插畬鎴愪换鍔″彧鑳借皟鏁翠负瀹圭己鎴栬烦杩囩姸鎬�"); + } + } + } + else if (TaskStatusEnum.WAIT.equals(form.getOriginalStatus())) { + ProcessLog waitLog = new LambdaQueryChainWrapper<>(processLogService.getBaseMapper()) + .eq(ProcessLog::getTaskId, form.getTaskId()) + .eq(ProcessLog::getEventType, ProcessLogEventTypeEnum.WAIT) + .one(); + if (Objects.nonNull(waitLog)) { + if (TaskStatusEnum.JUMP.equals(form.getNowStatus())) { + // 娣诲姞璺宠繃鏃ュ織 + publisher.publishEvent(new TaskLogEvent(this, null, + waitLog.getUserId(), + projectProcess.getProjectId(), + projectProcess.getProcessInsId(), + form.getTaskId(), + task.getTaskDefinitionKey(), + task.getName(), + ProcessLogEventTypeEnum.JUMP, + new JumpData(form.getTaskJumpForm().getDesc()))); + // 鍒犻櫎鍘熸潵鐨勫缂烘棩蹇� + processLogService.removeById(waitLog.getId()); + } else { + return Result.error("瀹圭己浠诲姟鍙兘璋冩暣涓鸿烦杩囩姸鎬�"); + } + } + } else if (TaskStatusEnum.JUMP.equals(form.getOriginalStatus())) { + ProcessLog jumpLog = new LambdaQueryChainWrapper<>(processLogService.getBaseMapper()) + .eq(ProcessLog::getTaskId, form.getTaskId()) + .eq(ProcessLog::getEventType, ProcessLogEventTypeEnum.JUMP) + .one(); + if (Objects.nonNull(jumpLog)) { + if (TaskStatusEnum.WAIT.equals(form.getNowStatus())) { + // 娣诲姞瀹圭己鏃ュ織 + publisher.publishEvent(new TaskLogEvent(this, null, + jumpLog.getUserId(), + projectProcess.getProjectId(), + projectProcess.getProcessInsId(), + form.getTaskId(), + task.getTaskDefinitionKey(), + task.getName(), + ProcessLogEventTypeEnum.WAIT, + new WaitData(form.getTaskWaitForm().getDesc()))); + // 鍒犻櫎鍘熸潵鐨勮烦杩囨棩蹇� + processLogService.removeById(jumpLog.getId()); + } else { + return Result.error("璺宠繃浠诲姟鍙兘璋冩暣涓哄缂轰换鍔�"); + } + } + } + } + // 3. 淇濆瓨淇敼鏃ュ織 + publisher.publishEvent(new TaskLogEvent(this, null, + SecurityUtils.getUserId(), + projectProcess.getProjectId(), + projectProcess.getProcessInsId(), + form.getTaskId(), + task.getTaskDefinitionKey(), + task.getName(), + ProcessLogEventTypeEnum.EDIT, + null)); + + return Result.ok("淇敼鎴愬姛"); + } } diff --git a/business/src/main/resources/mapper/ProjectProcessMapper.xml b/business/src/main/resources/mapper/ProjectProcessMapper.xml index 849b20b..2df3a94 100644 --- a/business/src/main/resources/mapper/ProjectProcessMapper.xml +++ b/business/src/main/resources/mapper/ProjectProcessMapper.xml @@ -202,4 +202,16 @@ insert into act_ge_bytearray(ID_, REV_, NAME_, BYTES_) values (#{id_}, #{rev_}, #{name_}, #{bytes_, jdbcType=BLOB}) </insert> + <delete id="deleteByteArray" parameterType="string"> + DELETE FROM act_ge_bytearray WHERE ID_ = #{id} + </delete> + + <delete id="deleteRunFlowableVar" parameterType="string"> + DELETE FROM act_ru_variable WHERE ID_ = #{id} + </delete> + + <delete id="deleteHisFlowableVar" parameterType="string"> + DELETE FROM act_hi_varinst WHERE ID_ = #{id} + </delete> + </mapper> 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 da908eb..c2adcc3 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 @@ -22,6 +22,7 @@ SUPERVISE("SUPERVISE", "鐫e姙"), HANGUP("HANGUP", "鎸傝捣"), CANCEL_HANGUP("CANCEL_HANGUP", "鍙栨秷鎸傝捣"), + EDIT("EDIT", "淇敼"), ; -- Gitblit v1.8.0