|
@@ -1,7 +1,9 @@
|
|
|
package com.fjhx.service.process.impl;
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fjhx.constants.FlowConstant;
|
|
|
import com.fjhx.constants.FlowExplainConstant;
|
|
@@ -11,17 +13,20 @@ import com.fjhx.entity.process.ProcessTenant;
|
|
|
import com.fjhx.enums.ProcessNodeHandleObjectTypeEnum;
|
|
|
import com.fjhx.enums.ProcessNodeTypeEnum;
|
|
|
import com.fjhx.mapper.process.ProcessTenantMapper;
|
|
|
-import com.fjhx.params.process.ProcessNodeVo;
|
|
|
import com.fjhx.service.process.ProcessNodeButtonService;
|
|
|
import com.fjhx.service.process.ProcessNodeService;
|
|
|
import com.fjhx.service.process.ProcessTenantService;
|
|
|
import com.fjhx.utils.Assert;
|
|
|
+import com.fjhx.utils.WrapperUtil;
|
|
|
import org.springblade.common.constant.CommonConstant;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -41,9 +46,35 @@ public class ProcessTenantServiceImpl extends ServiceImpl<ProcessTenantMapper, P
|
|
|
private ProcessNodeButtonService processNodeButtonService;
|
|
|
|
|
|
@Override
|
|
|
+ public Page<Map<String, Object>> getPage(Map<String, String> condition) {
|
|
|
+
|
|
|
+ QueryWrapper<?> wrapper = WrapperUtil.init(condition)
|
|
|
+ .eq("pt.binding_tenant_id", "bindingTenantId", "租户id不能为空")
|
|
|
+ .eq("pi.service_name", "serviceName")
|
|
|
+ .keyword("pi.module_name", "pt.name")
|
|
|
+ .getWrapper()
|
|
|
+ .eq("pt.current", StatusConstant.YES);
|
|
|
+
|
|
|
+ return baseMapper.getPage(createPage(condition), wrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
public void add(ProcessTenant processTenant) {
|
|
|
|
|
|
- dataHandle(processTenant);
|
|
|
+ // 流程id
|
|
|
+ Long processInfoId = processTenant.getProcessInfoId();
|
|
|
+ Assert.notEmpty(processInfoId, FlowExplainConstant.PROCESS_INFO_ID_EMPTY);
|
|
|
+
|
|
|
+ // 流程名称
|
|
|
+ String name = processTenant.getName();
|
|
|
+ Assert.notEmpty(name, FlowExplainConstant.PROCESS_NAME);
|
|
|
+
|
|
|
+ // 租户id
|
|
|
+ String bindingTenantId = processTenant.getBindingTenantId();
|
|
|
+ if (ObjectUtil.isEmpty(bindingTenantId)) {
|
|
|
+ processTenant.setBindingTenantId(AuthUtil.getTenantId());
|
|
|
+ }
|
|
|
|
|
|
// 判断流程是否存在
|
|
|
int count = count(Wrappers.<ProcessTenant>lambdaQuery()
|
|
@@ -63,43 +94,59 @@ public class ProcessTenantServiceImpl extends ServiceImpl<ProcessTenantMapper, P
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
- public void addVersion(ProcessTenant processTenant) {
|
|
|
+ public List<ProcessNode> addVersion(ProcessTenant processTenant) {
|
|
|
+
|
|
|
+ // 查询流程最大版本信息
|
|
|
+ ProcessTenant newProcessTenant = getOne(Wrappers.<ProcessTenant>lambdaQuery()
|
|
|
+ .eq(ProcessTenant::getProcessInfoId, processTenant.getProcessInfoId())
|
|
|
+ .eq(ProcessTenant::getBindingTenantId, processTenant.getBindingTenantId())
|
|
|
+ .orderByDesc(ProcessTenant::getVersionNumber)
|
|
|
+ .last("limit 1")
|
|
|
+ );
|
|
|
|
|
|
- dataHandle(processTenant);
|
|
|
+ // id设为空
|
|
|
+ newProcessTenant.setId(null);
|
|
|
|
|
|
- // 赋值版本号
|
|
|
- processTenant.setVersionNumber(getNewestVersion(processTenant));
|
|
|
- processTenant.setCurrent(StatusConstant.No);
|
|
|
+ // 版本号+1 设为非当前流程
|
|
|
+ newProcessTenant.setVersionNumber(newProcessTenant.getVersionNumber() + 1);
|
|
|
+ newProcessTenant.setCurrent(StatusConstant.No);
|
|
|
|
|
|
// 保存数据
|
|
|
- save(processTenant);
|
|
|
+ save(newProcessTenant);
|
|
|
|
|
|
// 生成默认节点
|
|
|
- createProcess(processTenant.getId());
|
|
|
+ return createProcess(newProcessTenant.getId());
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 获取最新版本号
|
|
|
- *
|
|
|
- * @return 最新版本号
|
|
|
- */
|
|
|
- private Integer getNewestVersion(ProcessTenant processTenant) {
|
|
|
- // 判断流程是否已存在
|
|
|
- ProcessTenant one = getOne(Wrappers.<ProcessTenant>lambdaQuery()
|
|
|
- .eq(ProcessTenant::getProcessInfoId, processTenant.getProcessInfoId())
|
|
|
+ @Override
|
|
|
+ public List<ProcessTenant> getVersionByProcessInfoId(ProcessTenant processTenant) {
|
|
|
+ return list(Wrappers.<ProcessTenant>lambdaQuery()
|
|
|
.eq(ProcessTenant::getBindingTenantId, processTenant.getBindingTenantId())
|
|
|
- .orderByDesc(ProcessTenant::getVersionNumber)
|
|
|
- .last("limit 1")
|
|
|
- );
|
|
|
+ .eq(ProcessTenant::getProcessInfoId, processTenant.getProcessInfoId()));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void editVersion(ProcessTenant processTenant) {
|
|
|
+
|
|
|
+ Long processInfoId = processTenant.getProcessInfoId();
|
|
|
+ String bindingTenantId = processTenant.getBindingTenantId();
|
|
|
+
|
|
|
+ update(Wrappers.<ProcessTenant>lambdaUpdate()
|
|
|
+ .set(ProcessTenant::getCurrent, StatusConstant.No)
|
|
|
+ .eq(ProcessTenant::getProcessInfoId, processInfoId)
|
|
|
+ .eq(ProcessTenant::getBindingTenantId, bindingTenantId));
|
|
|
|
|
|
- return one.getVersionNumber() + 1;
|
|
|
+ processTenant.setCurrent(StatusConstant.YES);
|
|
|
+ updateById(processTenant);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 生成默认流程
|
|
|
*/
|
|
|
- private void createProcess(Long processTenantId) {
|
|
|
+ private List<ProcessNode> createProcess(Long processTenantId) {
|
|
|
|
|
|
// 生成默认开始节点
|
|
|
ProcessNode startProcessNode = new ProcessNode();
|
|
@@ -121,31 +168,10 @@ public class ProcessTenantServiceImpl extends ServiceImpl<ProcessTenantMapper, P
|
|
|
endProcessNode.setCode(FlowConstant.END_CODE);
|
|
|
processNodeService.save(endProcessNode);
|
|
|
|
|
|
- processNodeButtonService.insertNodeButton(Arrays.asList(startProcessNode, endProcessNode));
|
|
|
- processNodeService.editNodeList(Arrays.asList(startProcessNode, endProcessNode));
|
|
|
+ List<ProcessNode> processNodeList = Arrays.asList(startProcessNode, endProcessNode);
|
|
|
+ processNodeButtonService.insertNodeButton(processNodeList);
|
|
|
|
|
|
+ return processNodeList;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 数据处理
|
|
|
- */
|
|
|
- private void dataHandle(ProcessTenant processTenant) {
|
|
|
-
|
|
|
- // 流程id
|
|
|
- Long processInfoId = processTenant.getProcessInfoId();
|
|
|
- Assert.notEmpty(processInfoId, FlowExplainConstant.PROCESS_INFO_ID_EMPTY);
|
|
|
-
|
|
|
- // 流程名称
|
|
|
- String name = processTenant.getName();
|
|
|
- Assert.notEmpty(name, FlowExplainConstant.PROCESS_NAME);
|
|
|
-
|
|
|
- // 租户id
|
|
|
- String bindingTenantId = processTenant.getBindingTenantId();
|
|
|
- if (ObjectUtil.isEmpty(bindingTenantId)) {
|
|
|
- processTenant.setBindingTenantId(AuthUtil.getTenantId());
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
}
|