|
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.platform.common.bean.AbstractPageResultBean;
|
|
|
import com.platform.common.constant.CommonConstants;
|
|
|
+import com.platform.common.util.BeanConverterUtil;
|
|
|
import com.platform.common.util.IdGeneratorUtils;
|
|
|
import com.platform.common.util.ListUtils;
|
|
|
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.WorkflowNode;
|
|
|
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.service.base.impl.BaseServiceImpl;
|
|
|
import com.platform.service.workflow.WorkflowService;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import tk.mybatis.mapper.weekend.Weekend;
|
|
|
import tk.mybatis.mapper.weekend.WeekendCriteria;
|
|
@@ -34,6 +37,8 @@ import java.util.List;
|
|
|
@Service("workflowService")
|
|
|
public class WorkflowServiceImpl extends BaseServiceImpl<WorkflowMapper, Workflow, WorkflowDTO> implements WorkflowService {
|
|
|
|
|
|
+ private final WorkflowNodeMapper workflowNodeMapper;
|
|
|
+
|
|
|
@Override
|
|
|
public int batchDelete(List<String> ids) {
|
|
|
Weekend<Workflow> weekend = new Weekend<>(Workflow.class);
|
|
@@ -51,17 +56,48 @@ public class WorkflowServiceImpl extends BaseServiceImpl<WorkflowMapper, Workflo
|
|
|
|
|
|
@Override
|
|
|
public Workflow saveByDTO(WorkflowDTO workflowDTO) {
|
|
|
+ Workflow flow = BeanConverterUtil.copyObjectProperties(workflowDTO, Workflow.class);
|
|
|
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();
|
|
|
// 解析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;
|
|
|
for(Object object : array) {
|
|
|
JSONObject jsonObject = (JSONObject) object;
|
|
@@ -81,7 +117,10 @@ public class WorkflowServiceImpl extends BaseServiceImpl<WorkflowMapper, Workflo
|
|
|
node.setCreatedUserName(SecurityUtils.getUserInfo().getRealName());
|
|
|
switch(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"));
|
|
|
break;
|
|
|
case CommonConstants.VERIFY_USER_TYPE: // 审核人
|