|
@@ -1,5 +1,7 @@
|
|
|
package com.usky.oa.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.alibaba.nacos.shaded.com.google.gson.JsonObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
@@ -8,10 +10,11 @@ import com.ruoyi.common.datascope.context.DataScopeContextHolder;
|
|
|
import com.usky.common.core.bean.CommonPage;
|
|
|
import com.usky.common.core.exception.BusinessException;
|
|
|
import com.usky.common.security.utils.SecurityUtils;
|
|
|
-import com.usky.oa.domain.OaDocument;
|
|
|
-import com.usky.oa.domain.OaFormDefinition;
|
|
|
+import com.usky.oa.domain.*;
|
|
|
import com.usky.oa.mapper.OaDocumentMapper;
|
|
|
+import com.usky.oa.mapper.OaFlowMapper;
|
|
|
import com.usky.oa.mapper.OaFormDefinitionMapper;
|
|
|
+import com.usky.oa.mapper.OaNodeMapper;
|
|
|
import com.usky.oa.service.OaDocumentService;
|
|
|
import com.usky.oa.service.OaFormDefinitionService;
|
|
|
import com.usky.common.mybatis.core.AbstractCrudService;
|
|
@@ -42,6 +45,12 @@ public class OaFormDefinitionServiceImpl extends AbstractCrudService<OaFormDefin
|
|
|
@Autowired
|
|
|
private OaDocumentMapper oaDocumentMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private OaNodeMapper oaNodeMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OaFlowMapper oaFlowMapper;
|
|
|
+
|
|
|
/**
|
|
|
* 新增/更新 表单
|
|
|
* 此方法负责验证表单定义的合法性,包括表单名称和标识的唯一性、长度限制,并最终保存合法的表单定义
|
|
@@ -81,7 +90,6 @@ public class OaFormDefinitionServiceImpl extends AbstractCrudService<OaFormDefin
|
|
|
// BeanUtils.copyBeanProp(oaFormDefinition, oaFormDefinition);
|
|
|
// 判断表单名称和标识是否重复
|
|
|
selectByNameOrSign(formName, formSign);
|
|
|
-
|
|
|
oaFormDefinition.setCreateBy(username);
|
|
|
oaFormDefinition.setDeptId(deptId);
|
|
|
oaFormDefinition.setTenantId(tenantId);
|
|
@@ -104,6 +112,66 @@ public class OaFormDefinitionServiceImpl extends AbstractCrudService<OaFormDefin
|
|
|
|
|
|
oaFormDefinitionMapper.updateById(oaFormDefinition);
|
|
|
}
|
|
|
+
|
|
|
+ // 新增流程数据
|
|
|
+ OaFlow oaFlow = new OaFlow();
|
|
|
+ oaFlow.setFlowName(oaFormDefinition.getFormName() + "的流程");
|
|
|
+ oaFlow.setDocType(oaFormDefinition.getFormSign());
|
|
|
+ oaFlow.setCreateBy(username);
|
|
|
+ oaFlow.setCreateTime(now);
|
|
|
+ oaFlow.setDeptId(deptId);
|
|
|
+ oaFlow.setTenantId(tenantId);
|
|
|
+ oaFlowMapper.insert(oaFlow);
|
|
|
+
|
|
|
+ // 获取JSON字符串内的node节点信息
|
|
|
+ String fieldInfo = oaFormDefinition.getFlowInfo();
|
|
|
+ if (StringUtils.isBlank(fieldInfo)) {
|
|
|
+ throw new BusinessException("信息不能为空");
|
|
|
+ }
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(fieldInfo);
|
|
|
+ if (jsonObject.containsKey("node")) {
|
|
|
+ List<JSONObject> nodeList = jsonObject.getJSONArray("node").toJavaList(JSONObject.class);
|
|
|
+ for (JSONObject node : nodeList) {
|
|
|
+ String nodeNo = node.getString("nodebh");
|
|
|
+ String nodeName = node.getString("nodeName");
|
|
|
+ Integer nodeType = node.getInteger("nodeType");
|
|
|
+ Integer nodeScope = node.getInteger("nodeScope");
|
|
|
+ String proposer = null;
|
|
|
+ Integer deptId2 = null;
|
|
|
+ Integer jobId = null;
|
|
|
+
|
|
|
+ // 用于记录上一个节点的 ID
|
|
|
+ Integer lastNodeId = null;
|
|
|
+
|
|
|
+ switch (nodeScope) {
|
|
|
+ case 0:
|
|
|
+ case 1:
|
|
|
+ case 2:
|
|
|
+ proposer = node.getString("appointApprover");
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ deptId2 = node.getInteger("deptId");
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ jobId = node.getInteger("jobId");
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new BusinessException("节点权限范围不正确");
|
|
|
+ }
|
|
|
+
|
|
|
+ OaNode oaNode = new OaNode();
|
|
|
+ oaNode.setNodeNo(nodeNo);
|
|
|
+ oaNode.setNodeName(nodeName);
|
|
|
+ oaNode.setNodeType(nodeType);
|
|
|
+ oaNode.setNodeScope(nodeScope);
|
|
|
+ oaNode.setProposer(proposer);
|
|
|
+ oaNode.setDeptId(deptId2);
|
|
|
+ oaNode.setJobId(jobId);
|
|
|
+ oaNode.setParentId(lastNodeId);
|
|
|
+ oaNodeMapper.insert(oaNode);
|
|
|
+ lastNodeId = oaNode.getId();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|