diff --git a/db/3pigxx_flow.sql b/db/3pigxx_flow.sql index 196c72acf..fb65b00d8 100644 --- a/db/3pigxx_flow.sql +++ b/db/3pigxx_flow.sql @@ -9,7 +9,7 @@ SET FOREIGN_KEY_CHECKS = 0; DROP TABLE IF EXISTS `process`; CREATE TABLE `process` ( `id` bigint NOT NULL COMMENT '用户id', - `del_flag` tinyint(1) NOT NULL COMMENT '逻辑删除字段', + `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `flow_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '表单ID', @@ -40,7 +40,7 @@ CREATE TABLE `process` ( DROP TABLE IF EXISTS `process_copy`; CREATE TABLE `process_copy` ( `id` bigint NOT NULL COMMENT '用户id', - `del_flag` tinyint(1) NOT NULL COMMENT '逻辑删除字段', + `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '更新时间', `start_time` datetime NOT NULL COMMENT ' 流程发起时间', @@ -67,7 +67,7 @@ CREATE TABLE `process_copy` ( DROP TABLE IF EXISTS `process_group`; CREATE TABLE `process_group` ( `id` bigint NOT NULL COMMENT '用户id', - `del_flag` tinyint(1) NOT NULL COMMENT '逻辑删除字段', + `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `group_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '分组名', @@ -88,7 +88,7 @@ CREATE TABLE `process_instance_record` ( `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程名字', `logo` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '头像', `user_id` bigint NOT NULL COMMENT '用户id', - `del_flag` tinyint(1) NOT NULL COMMENT '逻辑删除字段', + `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `flow_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程id', @@ -112,7 +112,7 @@ CREATE TABLE `process_instance_record` ( DROP TABLE IF EXISTS `process_node_data`; CREATE TABLE `process_node_data` ( `id` bigint NOT NULL COMMENT '用户id', - `del_flag` tinyint(1) NOT NULL COMMENT '逻辑删除字段', + `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '更新时间', `flow_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程id', @@ -130,7 +130,7 @@ CREATE TABLE `process_node_data` ( DROP TABLE IF EXISTS `process_node_record`; CREATE TABLE `process_node_record` ( `id` bigint NOT NULL COMMENT '用户id', - `del_flag` tinyint(1) NOT NULL COMMENT '逻辑删除字段', + `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '更新时间', `flow_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程id', @@ -155,7 +155,7 @@ CREATE TABLE `process_node_record` ( DROP TABLE IF EXISTS `process_node_record_assign_user`; CREATE TABLE `process_node_record_assign_user` ( `id` bigint NOT NULL COMMENT '用户id', - `del_flag` tinyint(1) NOT NULL COMMENT '逻辑删除字段', + `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '更新时间', `flow_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程id', @@ -184,7 +184,7 @@ CREATE TABLE `process_node_record_assign_user` ( DROP TABLE IF EXISTS `process_starter`; CREATE TABLE `process_starter` ( `id` bigint NOT NULL COMMENT '用户id', - `del_flag` tinyint(1) NOT NULL COMMENT '逻辑删除字段', + `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '更新时间', `type_id` bigint NOT NULL COMMENT '用户id或者部门id', diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/entity/Process.java b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/entity/Process.java index be790cbe8..0fd7edb85 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/entity/Process.java +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/entity/Process.java @@ -76,13 +76,13 @@ public class Process { * 0 正常 1=隐藏 */ @TableField("is_hidden") - private Boolean hidden; + private String hidden; /** * 0 正常 1=停用 */ @TableField("is_stop") - private Boolean stop; + private String stop; /** * 流程管理员 diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/FormGroupVo.java b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/FormGroupVo.java index dc3779fd4..0114c0cb6 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/FormGroupVo.java +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/FormGroupVo.java @@ -46,7 +46,7 @@ public class FormGroupVo { private String logo; - private Boolean stop; + private String stop; private String remark; diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/CombinationGroupServiceImpl.java b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/CombinationGroupServiceImpl.java index 50e0a9b15..6d6517683 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/CombinationGroupServiceImpl.java +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/CombinationGroupServiceImpl.java @@ -33,7 +33,7 @@ public class CombinationGroupServiceImpl implements ICombinationGroupService { /** * 查询表单组包含流程 - * @param hidden + * @param groupId groupId * @return 表单组数据 */ @Override diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessServiceImpl.java b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessServiceImpl.java index dd487bb7f..6291a31ca 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessServiceImpl.java +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessServiceImpl.java @@ -45,212 +45,219 @@ import java.util.Map; @RequiredArgsConstructor public class ProcessServiceImpl extends ServiceImpl implements IProcessService { - private final IProcessStarterService processStarterService; + private final IProcessStarterService processStarterService; - private final RemoteFlowEngineService flowEngineService; + private final RemoteFlowEngineService flowEngineService; - private final Sequence flowSequence; + private final Sequence flowSequence; - private final ObjectMapper objectMapper; + private final ObjectMapper objectMapper; - /** - * 获取详细数据 - * @param flowId - * @return - */ - @Override - public R getDetail(String flowId) { - // 获取流程详情 - ProcessVO processVO = this.getProcessVO(flowId); - return R.ok(processVO); - } + /** + * 获取详细数据 + * + * @param flowId + * @return + */ + @Override + public R getDetail(String flowId) { + // 获取流程详情 + ProcessVO processVO = this.getProcessVO(flowId); + return R.ok(processVO); + } - /** - * 根据流程ID获取流程详情 - * @param flowId 流程ID - * @return 流程详情 - */ - @SneakyThrows - private ProcessVO getProcessVO(String flowId) { + /** + * 根据流程ID获取流程详情 + * + * @param flowId 流程ID + * @return 流程详情 + */ + @SneakyThrows + private ProcessVO getProcessVO(String flowId) { - Process oaForms = getByFlowId(flowId); - String process = oaForms.getProcess(); - String formItems = oaForms.getFormItems(); - Node startNode = objectMapper.readValue(process, new TypeReference<>() { - }); + Process oaForms = getByFlowId(flowId); + String process = oaForms.getProcess(); + String formItems = oaForms.getFormItems(); + Node startNode = objectMapper.readValue(process, new TypeReference<>() { + }); - Map formPerms = startNode.getFormPerms(); + Map formPerms = startNode.getFormPerms(); - List formItemVOList = objectMapper.readValue(formItems, new TypeReference<>() { - }); - for (FormItemVO formItemVO : formItemVOList) { - String perm = MapUtil.getStr(formPerms, formItemVO.getId(), ProcessInstanceConstant.FormPermClass.EDIT); - formItemVO.setPerm(perm); + List formItemVOList = objectMapper.readValue(formItems, new TypeReference<>() { + }); + for (FormItemVO formItemVO : formItemVOList) { + String perm = MapUtil.getStr(formPerms, formItemVO.getId(), ProcessInstanceConstant.FormPermClass.EDIT); + formItemVO.setPerm(perm); - // 发号器赋值 - if (StrUtil.equals(formItemVO.getType(), FormTypeEnum.SEQUENCE.getType())) { - FormItemVO.Props props = formItemVO.getProps(); - String prefix = props.getPrefix(); - String nextNo = flowSequence.nextNo(); - formItemVO.setPlaceholder(StrUtil.isNotBlank(prefix) ? prefix + nextNo : nextNo); - props.setValue(StrUtil.isNotBlank(prefix) ? prefix + nextNo : nextNo); - formItemVO.setProps(props); - } + // 发号器赋值 + if (StrUtil.equals(formItemVO.getType(), FormTypeEnum.SEQUENCE.getType())) { + FormItemVO.Props props = formItemVO.getProps(); + String prefix = props.getPrefix(); + String nextNo = flowSequence.nextNo(); + formItemVO.setPlaceholder(StrUtil.isNotBlank(prefix) ? prefix + nextNo : nextNo); + props.setValue(StrUtil.isNotBlank(prefix) ? prefix + nextNo : nextNo); + formItemVO.setProps(props); + } - if (StrUtil.equals(formItemVO.getType(), FormTypeEnum.LAYOUT.getType())) { - // 明细 - Object value = formItemVO.getProps().getValue(); - List subList = Convert.toList(FormItemVO.class, value); - for (FormItemVO itemVO : subList) { - String perm1 = MapUtil.getStr(formPerms, itemVO.getId(), - ProcessInstanceConstant.FormPermClass.EDIT); - itemVO.setPerm(perm1); - } + if (StrUtil.equals(formItemVO.getType(), FormTypeEnum.LAYOUT.getType())) { + // 明细 + Object value = formItemVO.getProps().getValue(); + List subList = Convert.toList(FormItemVO.class, value); + for (FormItemVO itemVO : subList) { + String perm1 = MapUtil.getStr(formPerms, itemVO.getId(), + ProcessInstanceConstant.FormPermClass.EDIT); + itemVO.setPerm(perm1); + } - formItemVO.getProps().setValue(subList); - formItemVO.getProps(); - } + formItemVO.getProps().setValue(subList); + formItemVO.getProps(); + } - } - oaForms.setFormItems(objectMapper.writeValueAsString(formItemVOList)); + } + oaForms.setFormItems(objectMapper.writeValueAsString(formItemVOList)); - List selectUserNodeId = NodeUtil.selectUserNodeId(startNode); + List selectUserNodeId = NodeUtil.selectUserNodeId(startNode); - ProcessVO processVO = BeanUtil.copyProperties(oaForms, ProcessVO.class); - processVO.setSelectUserNodeId(selectUserNodeId); + ProcessVO processVO = BeanUtil.copyProperties(oaForms, ProcessVO.class); + processVO.setSelectUserNodeId(selectUserNodeId); - return processVO; - } + return processVO; + } - /** - * 根据流程ID获取流程 - * @param flowId 流程ID - * @return 流程 - */ - @Override - public Process getByFlowId(String flowId) { - return this.lambdaQuery().eq(Process::getFlowId, flowId).one(); - } + /** + * 根据流程ID获取流程 + * + * @param flowId 流程ID + * @return 流程 + */ + @Override + public Process getByFlowId(String flowId) { + return this.lambdaQuery().eq(Process::getFlowId, flowId).one(); + } - /** - * 更新流程 - * @param process 流程 - */ - @Override - public void updateByFlowId(Process process) { - this.lambdaUpdate().eq(Process::getFlowId, process.getFlowId()).update(process); - } + /** + * 更新流程 + * + * @param process 流程 + */ + @Override + public void updateByFlowId(Process process) { + this.lambdaUpdate().eq(Process::getFlowId, process.getFlowId()).update(process); + } - /** - * 隐藏流程 - * @param flowId 流程ID - */ - @Override - public void hide(String flowId) { - this.lambdaUpdate().set(Process::getHidden, true).eq(Process::getFlowId, flowId).update(new Process()); - } + /** + * 隐藏流程 + * + * @param flowId 流程ID + */ + @Override + public void hide(String flowId) { + this.lambdaUpdate().set(Process::getHidden, true).eq(Process::getFlowId, flowId).update(new Process()); + } - /** - * 创建流程 - * @param process 流程 - * @return 操作结果 - */ - @SneakyThrows - @Override - public R create(Process process) { - Map map = new HashMap<>(); - map.put("process", process); - map.put("userId", SecurityUtils.getUser().getId()); - R r = flowEngineService.createFlow(map); - if (!r.isOk()) { - return R.failed(r.getMsg()); - } - String flowId = r.getData(); - NodeUser nodeUser = objectMapper.readValue(process.getAdminList(), new TypeReference>() { - }).get(0); + /** + * 创建流程 + * + * @param process 流程 + * @return 操作结果 + */ + @SneakyThrows + @Override + public R create(Process process) { + Map map = new HashMap<>(); + map.put("process", process); + map.put("userId", SecurityUtils.getUser().getId()); + R r = flowEngineService.createFlow(map); + if (!r.isOk()) { + return R.failed(r.getMsg()); + } + String flowId = r.getData(); + NodeUser nodeUser = objectMapper.readValue(process.getAdminList(), new TypeReference>() { + }).get(0); - // 更新流程 - if (StrUtil.isNotBlank(process.getFlowId())) { + // 更新流程 + if (StrUtil.isNotBlank(process.getFlowId())) { - Process oldProcess = this.getByFlowId(process.getFlowId()); - this.hide(process.getFlowId()); - // 修改所有的管理员 - this.lambdaUpdate() - .set(Process::getAdminId, nodeUser.getId()) - .eq(Process::getUniqueId, oldProcess.getUniqueId()) - .update(new Process()); + Process oldProcess = this.getByFlowId(process.getFlowId()); + this.hide(process.getFlowId()); + // 修改所有的管理员 + this.lambdaUpdate() + .set(Process::getAdminId, nodeUser.getId()) + .eq(Process::getUniqueId, oldProcess.getUniqueId()) + .update(new Process()); - } + } - Node startNode = objectMapper.readValue(process.getProcess(), Node.class); + Node startNode = objectMapper.readValue(process.getProcess(), Node.class); - List nodeUserList = startNode.getNodeUserList(); + List nodeUserList = startNode.getNodeUserList(); - StringBuilder stringBuilder = new StringBuilder(); - if (CollUtil.isNotEmpty(nodeUserList)) { - int index = 0; + StringBuilder stringBuilder = new StringBuilder(); + if (CollUtil.isNotEmpty(nodeUserList)) { + int index = 0; - for (NodeUser user : nodeUserList) { - if (index > 0) { - stringBuilder.append(","); - } - stringBuilder.append(user.getName()); - index++; - if (index > 5) { - break; - } + for (NodeUser user : nodeUserList) { + if (index > 0) { + stringBuilder.append(","); + } + stringBuilder.append(user.getName()); + index++; + if (index > 5) { + break; + } - } - } + } + } - Process p = new Process(); - p.setFlowId(flowId); - p.setName(process.getName()); - p.setLogo(process.getLogo()); - p.setSettings(process.getSettings()); - p.setGroupId(process.getGroupId()); - p.setFormItems(process.getFormItems()); - p.setProcess(process.getProcess()); - p.setRemark(process.getRemark()); - p.setSort(0); - p.setHidden(false); - p.setStop(false); - p.setAdminId(nodeUser.getId()); - p.setUniqueId(IdUtil.fastSimpleUUID()); - p.setAdminList(process.getAdminList()); - p.setRangeShow(stringBuilder.toString()); + Process p = new Process(); + p.setFlowId(flowId); + p.setName(process.getName()); + p.setLogo(process.getLogo()); + p.setSettings(process.getSettings()); + p.setGroupId(process.getGroupId()); + p.setFormItems(process.getFormItems()); + p.setProcess(process.getProcess()); + p.setRemark(process.getRemark()); + p.setSort(0); + p.setHidden("0"); + p.setStop("0"); + p.setAdminId(nodeUser.getId()); + p.setUniqueId(IdUtil.fastSimpleUUID()); + p.setAdminList(process.getAdminList()); + p.setRangeShow(stringBuilder.toString()); - this.save(p); + this.save(p); - // 保存范围 - for (NodeUser nodeUserDto : nodeUserList) { - ProcessStarter processStarter = new ProcessStarter(); + // 保存范围 + for (NodeUser nodeUserDto : nodeUserList) { + ProcessStarter processStarter = new ProcessStarter(); - processStarter.setProcessId(p.getId()); - processStarter.setTypeId(nodeUserDto.getId()); - processStarter.setType(nodeUserDto.getType()); - processStarterService.save(processStarter); - } + processStarter.setProcessId(p.getId()); + processStarter.setTypeId(nodeUserDto.getId()); + processStarter.setType(nodeUserDto.getType()); + processStarterService.save(processStarter); + } - return R.ok(); - } + return R.ok(); + } - /** - * 编辑表单 - * @param flowId 流程ID - * @param type 类型 stop using delete - * @param groupId 分组ID - * @return 操作结果 - */ - @Override - public R update(String flowId, String type, Long groupId) { - Process process = new Process(); - process.setFlowId(flowId); - process.setStop("stop".equals(type)); - process.setHidden("delete".equals(type)); - process.setGroupId(groupId); - this.updateByFlowId(process); - return R.ok(); - } + /** + * 编辑表单 + * + * @param flowId 流程ID + * @param type 类型 stop using delete + * @param groupId 分组ID + * @return 操作结果 + */ + @Override + public R update(String flowId, String type, Long groupId) { + Process process = new Process(); + process.setFlowId(flowId); + process.setStop("stop".equals(type) ? "1" : "0"); + process.setHidden("delete".equals(type) ? "1" : "0"); + process.setGroupId(groupId); + this.updateByFlowId(process); + return R.ok(); + } }