Quellcode durchsuchen

新增自定义流程属性-动态修改流程候选人

wangliang vor 3 Jahren
Ursprung
Commit
63ddc6db6a

+ 0 - 11
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFCustomFlow.java

@@ -45,9 +45,6 @@ public class TFCustomFlow extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "是否发布,0:否,1:是")
     private Boolean publish;
 
-    @ApiModelProperty(value = "是否启动,0:否,1:是")
-    private Boolean start;
-
     @ApiModelProperty(value = "自定义流程源数据")
     private String objectData;
 
@@ -83,14 +80,6 @@ public class TFCustomFlow extends BaseEntity implements Serializable {
         insertInfo(userId);
     }
 
-    public Boolean getStart() {
-        return start;
-    }
-
-    public void setStart(Boolean start) {
-        this.start = start;
-    }
-
     public String getFlowProcessVar() {
         return flowProcessVar;
     }

+ 8 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ActivitiService.java

@@ -149,4 +149,12 @@ public interface ActivitiService {
      * @throws IOException
      */
     public Map<String, Object> dynamicBuildBpmn(CustomFlowSaveDto customFlowSaveDto, String id) throws IOException;
+
+    /**
+     * 修改启动流程候选人
+     *
+     * @param customFlowId
+     * @param approveId
+     */
+    public void customFlowStartUpdateApproveId(Long customFlowId, Long approveId);
 }

+ 27 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java

@@ -22,6 +22,7 @@ import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.service.SysUserService;
+import com.qmth.teachcloud.common.util.JacksonUtil;
 import com.qmth.teachcloud.common.util.RedisUtil;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
@@ -112,6 +113,9 @@ public class ActivitiServiceImpl implements ActivitiService {
     @Resource
     MultiWorkFlow multiWorkFlow;
 
+    @Resource
+    TFCustomFlowService tfCustomFlowService;
+
     /**
      * 注册流程
      *
@@ -221,7 +225,6 @@ public class ActivitiServiceImpl implements ActivitiService {
         } catch (IOException e) {
             e.printStackTrace();
         }
-        map.computeIfAbsent(SystemConstant.FLOW_START, v -> true);
         map.computeIfAbsent(SystemConstant.PROCESS_DEFINITION_ID, v -> processInstance.getProcessDefinitionId());
         map.computeIfAbsent(SystemConstant.FLOW_ID, v -> processInstance.getProcessInstanceId());
         map.remove(SystemConstant.MODEL);
@@ -1476,7 +1479,6 @@ public class ActivitiServiceImpl implements ActivitiService {
         model.addProcess(process);
         process.setId(id);
 
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         List<CustomFlowDto> customFlowLists = customFlowSaveDto.getCustomFlowLists();
         Map<CustomFlowTypeEnum, CustomFlowDto> customFlowTypeEnumCustomFlowDtoMap = new HashMap<>();
         FlowTaskLink flowTaskLink = new FlowTaskLink();
@@ -1589,6 +1591,29 @@ public class ActivitiServiceImpl implements ActivitiService {
         return map;
     }
 
+    /**
+     * 修改启动流程候选人
+     *
+     * @param customFlowId
+     * @param approveId
+     */
+    @Override
+    @Transactional
+    public void customFlowStartUpdateApproveId(Long customFlowId, Long approveId) {
+        TFCustomFlow tfCustomFlow = tfCustomFlowService.getById(customFlowId);
+        Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到自定义流程数据"));
+        Map<String, Object> map = JacksonUtil.readJson(tfCustomFlow.getFlowProcessVar(), Map.class);
+        Optional.ofNullable(map).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程变量数据为空"));
+        Task task = taskService.createTaskQuery().processInstanceId(String.valueOf(map.get(SystemConstant.FLOW_ID))).singleResult();
+        task.setAssignee(String.valueOf(approveId));
+        taskService.saveTask(task);
+        Map<String, Object> flowProcessVarMap = (Map<String, Object>) map.get(SystemConstant.FLOW_PROCESS_VAR_MAP);
+        Optional.ofNullable(map).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程节点变量数据为空"));
+        flowProcessVarMap.put(SystemConstant.APPROVE_ID, approveId);
+        tfCustomFlow.setFlowProcessVar(JacksonUtil.parseJson(map));
+        tfCustomFlowService.updateById(tfCustomFlow);
+    }
+
     /**
      * 开始任务节点
      *

+ 2 - 17
distributed-print/src/main/java/com/qmth/distributed/print/api/TFCustomFlowController.java

@@ -17,7 +17,6 @@ import com.qmth.teachcloud.common.service.CommonCacheService;
 import com.qmth.teachcloud.common.util.*;
 import io.swagger.annotations.*;
 import org.activiti.engine.TaskService;
-import org.activiti.engine.task.Task;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.transaction.annotation.Transactional;
@@ -70,7 +69,6 @@ public class TFCustomFlowController {
         }
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         customFlowSaveDto.setSchoolAndOrgInfo(sysUser.getSchoolId(), sysUser.getOrgId());
-//        log.info("customFlowSaveDto:{}", JacksonUtil.parseJson(customFlowSaveDto));
         String flowBpmnId = MD5Util.encoder(customFlowSaveDto.toString());
         BasicSchool basicSchool = commonCacheService.schoolCache(customFlowSaveDto.getSchoolId());
         flowBpmnId = basicSchool.getCode() + "_" + flowBpmnId;
@@ -92,12 +90,7 @@ public class TFCustomFlowController {
             //自定义流程处理开始
             Map<String, Object> map = activitiService.dynamicBuildBpmn(customFlowSaveDto, flowBpmnId);
             tfCustomFlow.setFlowProcessVar(JacksonUtil.parseJson(map));
-            if (Objects.nonNull(map.get(SystemConstant.FLOW_START))) {
-                tfCustomFlow.setStart((Boolean) map.get(SystemConstant.FLOW_START));
-            }
-            if (Objects.nonNull(map.get(SystemConstant.PROCESS_DEFINITION_ID))) {
-                tfCustomFlow.setActFlowId((String) map.get(SystemConstant.PROCESS_DEFINITION_ID));
-            }
+            tfCustomFlow.setActFlowId((String) map.get(SystemConstant.PROCESS_DEFINITION_ID));
             tfCustomFlowService.save(tfCustomFlow);
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
@@ -121,15 +114,7 @@ public class TFCustomFlowController {
     @Transactional
     public Result testStart(@ApiParam(value = "流程id", required = true) @RequestParam String id) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        TFCustomFlow tfCustomFlow = tfCustomFlowService.getById(SystemConstant.convertIdToLong(id));
-        Map<String, Object> map = JacksonUtil.readJson(tfCustomFlow.getFlowProcessVar(), Map.class);
-        Task task = taskService.createTaskQuery().processInstanceId(String.valueOf(map.get(SystemConstant.FLOW_ID))).singleResult();
-        task.setAssignee(String.valueOf(sysUser.getId()));
-        taskService.saveTask(task);
-        Map<String, Object> flowProcessVarMap = (Map<String, Object>) map.get(SystemConstant.FLOW_PROCESS_VAR_MAP);
-        flowProcessVarMap.put(SystemConstant.APPROVE_ID, sysUser.getId());
-        tfCustomFlow.setFlowProcessVar(JacksonUtil.parseJson(map));
-        tfCustomFlowService.updateById(tfCustomFlow);
+        activitiService.customFlowStartUpdateApproveId(SystemConstant.convertIdToLong(id), sysUser.getId());
         return ResultUtil.ok(true);
     }
 }

+ 0 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -58,7 +58,6 @@ public class SystemConstant {
     public static final String ID = "id";
     public static final String MODEL = "model";
     public static final String FLOW_PROCESS_VAR_MAP = "flowProcessVarMap";
-    public static final String FLOW_START = "start";
     public static final String PROCESS_DEFINITION_ID = "processDefinitionId";
     public static final String FILE = "file";
     public static final String SIZE = "size";