🗃️ 执行数据库相关的变化 统一flow 模块数据库字段【del_flag】/ 【bool】字段

This commit is contained in:
lbw committed 2024-01-23 10:58:34 +08:00
1 parent 4f1c99d38b
commit 1c4de7ef2a
5 files changed
+193 -186

No files matched your search

+8 -8
View File
@@ -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',
@@ -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;
/**
* 流程管理员
@@ -46,7 +46,7 @@ public class FormGroupVo {
private String logo;
private Boolean stop;
private String stop;
private String remark;
@@ -33,7 +33,7 @@ public class CombinationGroupServiceImpl implements ICombinationGroupService {
/**
* 查询表单组包含流程
* @param hidden
* @param groupId groupId
* @return 表单组数据
*/
@Override
@@ -45,212 +45,219 @@ import java.util.Map;
@RequiredArgsConstructor
public class ProcessServiceImpl extends ServiceImpl<ProcessMapper, Process> 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<ProcessVO> getDetail(String flowId) {
// 获取流程详情
ProcessVO processVO = this.getProcessVO(flowId);
return R.ok(processVO);
}
/**
* 获取详细数据
*
* @param flowId
* @return
*/
@Override
public R<ProcessVO> 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<String, String> formPerms = startNode.getFormPerms();
Map<String, String> formPerms = startNode.getFormPerms();
List<FormItemVO> formItemVOList = objectMapper.readValue(formItems, new TypeReference<>() {
});
for (FormItemVO formItemVO : formItemVOList) {
String perm = MapUtil.getStr(formPerms, formItemVO.getId(), ProcessInstanceConstant.FormPermClass.EDIT);
formItemVO.setPerm(perm);
List<FormItemVO> 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<FormItemVO> 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<FormItemVO> 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<String> selectUserNodeId = NodeUtil.selectUserNodeId(startNode);
List<String> 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<String, Object> map = new HashMap<>();
map.put("process", process);
map.put("userId", SecurityUtils.getUser().getId());
R<String> r = flowEngineService.createFlow(map);
if (!r.isOk()) {
return R.failed(r.getMsg());
}
String flowId = r.getData();
NodeUser nodeUser = objectMapper.readValue(process.getAdminList(), new TypeReference<List<NodeUser>>() {
}).get(0);
/**
* 创建流程
*
* @param process 流程
* @return 操作结果
*/
@SneakyThrows
@Override
public R create(Process process) {
Map<String, Object> map = new HashMap<>();
map.put("process", process);
map.put("userId", SecurityUtils.getUser().getId());
R<String> r = flowEngineService.createFlow(map);
if (!r.isOk()) {
return R.failed(r.getMsg());
}
String flowId = r.getData();
NodeUser nodeUser = objectMapper.readValue(process.getAdminList(), new TypeReference<List<NodeUser>>() {
}).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<NodeUser> nodeUserList = startNode.getNodeUserList();
List<NodeUser> 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();
}
}