Explorar o código

流程节点完善

guarantee-lsq hai 11 meses
pai
achega
e14de478a2

+ 1 - 1
platform-dao/src/main/java/com/platform/dao/entity/workflow/WorkflowTask.java

@@ -67,7 +67,7 @@ public class WorkflowTask implements Serializable {
      */
      */
     private Integer nodeSort;
     private Integer nodeSort;
     /**
     /**
-     * 待办  已办  撤回  终止 
+     * 待办  已办  撤回  终止 处理中
      */
      */
     private Integer status;
     private Integer status;
     /**
     /**

+ 10 - 10
platform-rest/src/main/java/com/platform/rest/controller/workflow/WorkflowController.java

@@ -1,24 +1,23 @@
 package com.platform.rest.controller.workflow;
 package com.platform.rest.controller.workflow;
 
 
+import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.common.util.BeanConverterUtil;
 import com.platform.common.util.R;
 import com.platform.common.util.R;
+import com.platform.common.validation.group.AddGroup;
+import com.platform.common.validation.group.UpdateGroup;
 import com.platform.dao.dto.workflow.WorkflowDTO;
 import com.platform.dao.dto.workflow.WorkflowDTO;
 import com.platform.dao.entity.workflow.Workflow;
 import com.platform.dao.entity.workflow.Workflow;
-import com.platform.service.workflow.WorkflowService;
 import com.platform.dao.util.ExcelUtil;
 import com.platform.dao.util.ExcelUtil;
 import com.platform.dao.vo.export.workflow.ExportWorkflowVO;
 import com.platform.dao.vo.export.workflow.ExportWorkflowVO;
 import com.platform.dao.vo.query.workflow.WorkflowVO;
 import com.platform.dao.vo.query.workflow.WorkflowVO;
-import com.platform.common.util.BeanConverterUtil;
-import com.platform.common.validation.group.AddGroup;
-import com.platform.common.validation.group.UpdateGroup;
-import org.springframework.security.access.prepost.PreAuthorize;
+import com.platform.rest.log.annotation.SysLog;
+import com.platform.service.workflow.WorkflowService;
+import lombok.AllArgsConstructor;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
-import lombok.AllArgsConstructor;
-import com.platform.common.bean.AbstractPageResultBean;
-import com.platform.rest.log.annotation.SysLog;
 
 
-import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 
 /**
 /**
  * @Description 流程表 控制器
  * @Description 流程表 控制器
@@ -65,7 +64,8 @@ public class WorkflowController {
     @SysLog("修改流程表")
     @SysLog("修改流程表")
     @PutMapping("/{id}")
     @PutMapping("/{id}")
     public R update(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody WorkflowDTO workflowDTO) {
     public R update(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody WorkflowDTO workflowDTO) {
-        workflowService.modModelByDTO(workflowDTO);
+        workflowDTO.setId(id);
+        workflowService.modByDTO(workflowDTO);
         return new R<>();
         return new R<>();
     }
     }
 
 

+ 2 - 0
platform-service/src/main/java/com/platform/service/workflow/WorkflowService.java

@@ -36,4 +36,6 @@ public interface WorkflowService extends IBaseService<Workflow, WorkflowDTO> {
 
 
 
 
     Workflow saveByDTO(WorkflowDTO workflowDTO);
     Workflow saveByDTO(WorkflowDTO workflowDTO);
+
+    void modByDTO(WorkflowDTO workflowDTO);
 }
 }

+ 45 - 6
platform-service/src/main/java/com/platform/service/workflow/impl/WorkflowServiceImpl.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageHelper;
 import com.platform.common.bean.AbstractPageResultBean;
 import com.platform.common.bean.AbstractPageResultBean;
 import com.platform.common.constant.CommonConstants;
 import com.platform.common.constant.CommonConstants;
+import com.platform.common.util.BeanConverterUtil;
 import com.platform.common.util.IdGeneratorUtils;
 import com.platform.common.util.IdGeneratorUtils;
 import com.platform.common.util.ListUtils;
 import com.platform.common.util.ListUtils;
 import com.platform.common.util.SecurityUtils;
 import com.platform.common.util.SecurityUtils;
@@ -13,10 +14,12 @@ import com.platform.dao.dto.workflow.WorkflowDTO;
 import com.platform.dao.entity.workflow.Workflow;
 import com.platform.dao.entity.workflow.Workflow;
 import com.platform.dao.entity.workflow.WorkflowNode;
 import com.platform.dao.entity.workflow.WorkflowNode;
 import com.platform.dao.mapper.workflow.WorkflowMapper;
 import com.platform.dao.mapper.workflow.WorkflowMapper;
+import com.platform.dao.mapper.workflow.WorkflowNodeMapper;
 import com.platform.dao.vo.query.workflow.WorkflowVO;
 import com.platform.dao.vo.query.workflow.WorkflowVO;
 import com.platform.service.base.impl.BaseServiceImpl;
 import com.platform.service.base.impl.BaseServiceImpl;
 import com.platform.service.workflow.WorkflowService;
 import com.platform.service.workflow.WorkflowService;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import tk.mybatis.mapper.weekend.Weekend;
 import tk.mybatis.mapper.weekend.Weekend;
 import tk.mybatis.mapper.weekend.WeekendCriteria;
 import tk.mybatis.mapper.weekend.WeekendCriteria;
@@ -34,6 +37,8 @@ import java.util.List;
 @Service("workflowService")
 @Service("workflowService")
 public class WorkflowServiceImpl extends BaseServiceImpl<WorkflowMapper, Workflow, WorkflowDTO> implements WorkflowService {
 public class WorkflowServiceImpl extends BaseServiceImpl<WorkflowMapper, Workflow, WorkflowDTO> implements WorkflowService {
 
 
+    private final WorkflowNodeMapper workflowNodeMapper;
+
     @Override
     @Override
     public int batchDelete(List<String> ids) {
     public int batchDelete(List<String> ids) {
         Weekend<Workflow> weekend = new Weekend<>(Workflow.class);
         Weekend<Workflow> weekend = new Weekend<>(Workflow.class);
@@ -51,17 +56,48 @@ public class WorkflowServiceImpl extends BaseServiceImpl<WorkflowMapper, Workflo
 
 
     @Override
     @Override
     public Workflow saveByDTO(WorkflowDTO workflowDTO) {
     public Workflow saveByDTO(WorkflowDTO workflowDTO) {
+        Workflow flow = BeanConverterUtil.copyObjectProperties(workflowDTO, Workflow.class);
         JSONArray array = JSONArray.parseArray(workflowDTO.getJson());
         JSONArray array = JSONArray.parseArray(workflowDTO.getJson());
         // 计算总节点数
         // 计算总节点数
-        int total = array.size();
-        // 计算层级数
-        saveModelByDTO(workflowDTO);
+        flow.setTotalNode(array.size());
+        flow.setId(IdGeneratorUtils.getObjectId());
+        flow.setCreatedTime(LocalDateTime.now());
+        flow.setCreatedUserId(SecurityUtils.getUserInfo().getUserId());
+        flow.setCreatedUserName(SecurityUtils.getUserInfo().getRealName());
         List<WorkflowNode> nodeList = ListUtils.newArrayList();
         List<WorkflowNode> nodeList = ListUtils.newArrayList();
         // 解析json,生成workflowNode,发起表单或者其他审批根据workflowNode来生成任务
         // 解析json,生成workflowNode,发起表单或者其他审批根据workflowNode来生成任务
-        return null;
+        parseJson(array,flow,nodeList);
+        mapper.insert(flow);
+        return flow;
+    }
+
+    @Override
+    public void modByDTO(WorkflowDTO workflowDTO) {
+        Workflow workflow = new Workflow();
+        workflow.setId(workflowDTO.getId());
+        workflow.setJson(workflowDTO.getJson());
+        // 判断当前是否有表单正在使用该流程
+        JSONArray array = JSONArray.parseArray(workflowDTO.getJson());
+        // 计算总节点数
+        workflow.setTotalNode(array.size());
+        // 删除nodeList
+        WorkflowNode nodeQuery = new WorkflowNode();
+        nodeQuery.setFlowId(workflowDTO.getId());
+        List<WorkflowNode> nodeList = workflowNodeMapper.select(nodeQuery);
+        if(CollectionUtils.isNotEmpty(nodeList)){
+            nodeList.forEach(node -> {
+                workflowNodeMapper.deleteByPrimaryKey(node.getId());
+            });
+        }
+        nodeList = ListUtils.newArrayList();
+        parseJson(array,workflow,nodeList);
+        workflow.setUpdateTime(LocalDateTime.now());
+        workflow.setUpdateUserId(SecurityUtils.getUserInfo().getUserId());
+        workflow.setUpdateUserName(SecurityUtils.getUserInfo().getRealName());
+        mapper.updateByPrimaryKeySelective(workflow);
     }
     }
 
 
-    private void parseJson(JSONArray array,WorkflowDTO record,List<WorkflowNode> nodeList) {
+    private void parseJson(JSONArray array,Workflow record,List<WorkflowNode> nodeList) {
         int maxNodeNum = 1;
         int maxNodeNum = 1;
         for(Object object : array) {
         for(Object object : array) {
             JSONObject jsonObject = (JSONObject) object;
             JSONObject jsonObject = (JSONObject) object;
@@ -81,7 +117,10 @@ public class WorkflowServiceImpl extends BaseServiceImpl<WorkflowMapper, Workflo
                 node.setCreatedUserName(SecurityUtils.getUserInfo().getRealName());
                 node.setCreatedUserName(SecurityUtils.getUserInfo().getRealName());
                 switch(type) {
                 switch(type) {
                     case CommonConstants.CONDITION_TYPE: // 条件分支
                     case CommonConstants.CONDITION_TYPE: // 条件分支
-                        node.setSwitchJson(jsonObject.getString("switchJson"));
+                        JSONObject condition = new JSONObject();
+                        condition.put("value", jsonObject.getString("handleConditionValue"));
+                        condition.put("symbol", jsonObject.getString("handleConditionType"));
+                        node.setSwitchJson(condition.toJSONString());
                         node.setSwitchHandleId(jsonObject.getString("handleNameId"));
                         node.setSwitchHandleId(jsonObject.getString("handleNameId"));
                         break;
                         break;
                     case CommonConstants.VERIFY_USER_TYPE: // 审核人
                     case CommonConstants.VERIFY_USER_TYPE: // 审核人