Commit d1d8c51b by 赵剑炜

分离工作流

parent 238a091b
......@@ -52,7 +52,7 @@ public class BpmnController {
return ApiRes.success(WorkProcessService.updateForm(process));
}
/**
* 修改表单
* 删除流程实例
*/
@ApiOperation("删除流程实例")
@PostMapping("deleteForm")
......@@ -121,6 +121,12 @@ public class BpmnController {
public ApiRes<PageResult<HistoryProcessInstanceVO>> applyList(@RequestBody ApplyDTO ApplyDTO) {
return ApiRes.success(WorkProcessService.applyList(ApplyDTO));
}
@ApiOperation("根据业务ID换取最新的流程信息")
@PostMapping("getProcessDefinitionId")
public ApiRes<String> getProcessDefinitionId(@RequestBody Map<String,Object> templateId) {
String temp= templateId.get("formId").toString();
return WorkProcessService.getProcessDefinitionId(temp);
}
@ApiOperation("查看我的待办")
@PostMapping("toDoList")
public ApiRes<PageResult<TaskVO>> toDoList(@RequestBody TaskDTO taskDTO){
......
package com.junmp.junmpProcess.controller;
import com.junmp.junmpProcess.dto.HandleDataDTO;
import com.junmp.junmpProcess.service.Bussiness.WorkProcessService;
import com.junmp.junmpProcess.service.IFlowDefinitionService;
import com.junmp.junmpProcess.service.ISysFormService;
import com.junmp.jyzb.api.bean.query.ProcessReq.SuspendOrActivateDefinitionReq;
import com.junmp.v2.common.bean.response.ApiRes;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@Slf4j
@RestController
@RequestMapping("/FlowDefinition")
@Api(tags = "流程定义")
public class FlowDefinitionController {
@Autowired
private IFlowDefinitionService FlowDefinitionService;
@ApiOperation("停启用流程")
@PostMapping("StopProcessInstanceById")
public ApiRes<Boolean> stopProcessInstanceById(@RequestBody SuspendOrActivateDefinitionReq req) {
return ApiRes.success(FlowDefinitionService.updateState(req));
}
@ApiOperation("根据业务ID换取最新的流程信息")
@PostMapping("GetProcessDefinitionId")
public ApiRes<String> GetProcessDefinitionId(@RequestBody Map<String,Object> templateId) {
String temp= templateId.get("formId").toString();
return FlowDefinitionService.getLatestDefinitionId(temp);
}
}
package com.junmp.junmpProcess.controller;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping("/FlowInstance")
@Api(tags = "流程实例")
public class FlowInstanceController {
}
package com.junmp.junmpProcess.controller;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping("/FlowTask")
@Api(tags = "流程任务")
public class FlowTaskController {
}
//package com.junmp.junmpProcess.controller;
//
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import com.junmp.junmpProcess.service.Bussiness.OrgUserAndDeptService;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RestController;
//
//import javax.annotation.Resource;
//
///**
// * @author : willian fu
// * @version : 1.0
// */
//@RestController
//@RequestMapping("/OrgUserAndDept")
//@Api(tags = "和用户组织机构有关的接口")
//public class OrgUserAndDeptController {
//
// @Resource
// private OrgUserAndDeptService orgService;
//
// /**
// * 查询组织架构树
// *
// * @param deptId 部门id
// * @return 组织架构树数据
// */
// @ApiOperation("查询组织架构树")
// @GetMapping("tree")
//// @PermissionData(pageComponent = "jeecg/JeecgDemoList")
// public Object getOrgTreeData(@RequestParam(defaultValue = "0") Integer deptId,
// @RequestParam(defaultValue = "user") String type
// ) {
// return orgService.getOrgTreeData(deptId, type);
// }
//
// /**
// * 模糊搜索用户
// *
// * @param userName 用户名/拼音/首字母
// * @return 匹配到的用户
// */
// @ApiOperation("模糊搜索用户")
// @GetMapping("tree/search")
// public Object getOrgTreeUser(@RequestParam String userName) {
// return orgService.getOrgTreeUser(userName.trim());
// }
//
//}
package com.junmp.junmpProcess.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.junmp.junmpProcess.service.ISysFormService;
import com.junmp.junmpProcess.vo.ProcessVO;
import com.junmp.junmpProcess.vo.TemplateGroupVo;
import com.junmp.junmpProcess.vo.UpdateProcessVO;
import com.junmp.jyzb.api.bean.query.ProcessReq.FormReq;
import com.junmp.v2.common.bean.request.BaseRequest;
import com.junmp.v2.common.bean.response.ApiRes;
import com.junmp.v2.db.api.page.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@Slf4j
@RestController
@RequestMapping("/SysForm")
@Api(tags = "流程编辑")
public class SysFormController {
@Autowired
private ISysFormService SysFormService;
@ApiOperation("创建新表单")
@PostMapping("CreateForm")
public ApiRes<Boolean> CreateForm(@RequestBody FormReq formReq) {
return ApiRes.success(SysFormService.createNewForm(formReq));
}
@ApiOperation("同时创建流程和表单")
@PostMapping(value = "Create")
public ApiRes<Boolean> Create(@RequestBody ProcessVO processVO) throws JsonProcessingException {
return ApiRes.success(SysFormService.createBpmn(processVO));
}
/**
* 修改表单名称和备注
*/
@ApiOperation("修改表单名称和备注")
@PostMapping("UpdateFormName")
public ApiRes<Boolean> UpdateFormName(@RequestBody UpdateProcessVO process) throws JsonProcessingException {
return ApiRes.success(SysFormService.updateFormName(process));
}
@ApiOperation("获取全部可用的表单和审核流")
@GetMapping(value = "GetFormList")
public ApiRes<PageResult<TemplateGroupVo>> GetFormList(BaseRequest br) {
return ApiRes.success(SysFormService.getFormList(br));
}
}
package com.junmp.junmpProcess.dto;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
@Data
@Builder
public class FlowCommentDto implements Serializable {
/**
* 意见类别 0 正常意见 1 退回意见 2 驳回意见
*/
private String type;
/**
* 意见内容
*/
private String comment;
}
package com.junmp.junmpProcess.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
@Getter
@Setter
@ApiModel("工作流任务相关-返回参数")
public class FlowTaskDto implements Serializable {
@ApiModelProperty("任务编号")
private String taskId;
@ApiModelProperty("任务执行编号")
private String executionId;
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("任务Key")
private String taskDefKey;
@ApiModelProperty("任务执行人Id")
private Long assigneeId;
@ApiModelProperty("部门名称")
private String deptName;
@ApiModelProperty("流程发起人部门名称")
private String startDeptName;
@ApiModelProperty("任务执行人名称")
private String assigneeName;
@ApiModelProperty("任务执行人部门")
private String assigneeDeptName;;
@ApiModelProperty("流程发起人Id")
private String startUserId;
@ApiModelProperty("流程发起人名称")
private String startUserName;
@ApiModelProperty("流程类型")
private String category;
@ApiModelProperty("流程变量信息")
private Object procVars;
@ApiModelProperty("局部变量信息")
private Object taskLocalVars;
@ApiModelProperty("流程部署编号")
private String deployId;
@ApiModelProperty("流程ID")
private String procDefId;
@ApiModelProperty("流程key")
private String procDefKey;
@ApiModelProperty("流程定义名称")
private String procDefName;
@ApiModelProperty("流程定义内置使用版本")
private int procDefVersion;
@ApiModelProperty("流程实例ID")
private String procInsId;
@ApiModelProperty("历史流程实例ID")
private String hisProcInsId;
@ApiModelProperty("任务耗时")
private String duration;
@ApiModelProperty("任务意见")
private FlowCommentDto comment;
@ApiModelProperty("候选执行人")
private String candidate;
@ApiModelProperty("任务创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@ApiModelProperty("任务完成时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date finishTime;
}
package com.junmp.junmpProcess.factory;
import lombok.Getter;
import org.flowable.engine.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* flowable 引擎注入封装
* @author Tony
* @date 2021-04-03
*/
@Component
@Getter
public class FlowServiceFactory {
@Resource
protected RepositoryService repositoryService;
@Resource
protected RuntimeService runtimeService;
@Resource
protected IdentityService identityService;
@Resource
protected TaskService taskService;
@Resource
protected HistoryService historyService;
@Resource
protected ManagementService managementService;
@Qualifier("processEngine")
@Resource
protected ProcessEngine processEngine;
}
......@@ -24,4 +24,6 @@ public interface OrgUserMapper {
public List<UserListDTO> QueryUserByRoleIdAndOrg(String roleId,String orgId);
public List<UserListDTO> QueryUserWithParentOrg(String userId);
public UserListDTO QueryUser(String userId);
}
......@@ -212,6 +212,13 @@ public interface WorkProcessService {
* @return
*/
ApiRes<HandleDataVO> instanceInfo(HandleDataDTO HandleDataDTO);
/**
* 通过流程实例id查看详情
*
* @return
*/
ApiRes<String> getProcessDefinitionId(String formId);
// /**
// * 上传文件
// * @return
......
......@@ -654,7 +654,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
}
// StartUser.setUserId(Long.valueOf("1694954953210986498"));
StartUser= LoginContext.getContext().getLoginUser();
// StartUser= LoginContext.getContext().getLoginUser();
JSONObject formData = processInstanceDto.getFormData();
Authentication.setAuthenticatedUserId(StartUser.getUserId().toString());
......@@ -1457,6 +1457,23 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
return Result.OK();
}
@Override
public ApiRes<String> getProcessDefinitionId(String formId) {
String defId="";
ProcessDefinition ProDef=repositoryService.createProcessDefinitionQuery()
.processDefinitionKey("Process_"+formId)
.latestVersion()
.singleResult();
if(ProDef!=null)
{
defId=ProDef.getId();
}
return ApiRes.success(defId);
}
@Override
public ApiRes<HandleDataVO> instanceInfo(HandleDataDTO HandleDataDTO) {
String processInstanceId = HandleDataDTO.getProcessInstanceId();
......
package com.junmp.junmpProcess.service;
import com.junmp.jyzb.api.bean.query.ProcessReq.SuspendOrActivateDefinitionReq;
import com.junmp.v2.common.bean.response.ApiRes;
public interface IFlowDefinitionService {
/**
* 挂起流程定义
*
* @return
*/
Boolean updateState(SuspendOrActivateDefinitionReq req) ;
/**
* 通过流程实例id查看详情
*
* @return
*/
ApiRes<String> getLatestDefinitionId(String formId);
}
package com.junmp.junmpProcess.service;
import com.junmp.junmpProcess.dto.StartProcessInstanceDTO;
import com.junmp.v2.common.bean.response.ApiRes;
import org.flowable.engine.history.HistoricProcessInstance;
import java.util.Map;
public interface IFlowInstanceService {
/**
* 激活或挂起流程实例
*
* @param state 状态
* @param instanceId 流程实例ID
*/
void updateState(Integer state, String instanceId);
/**
* 删除流程实例ID
*
* @param instanceId 流程实例ID
* @param deleteReason 删除原因
*/
void delete(String instanceId, String deleteReason);
/**
* 根据实例ID查询历史实例数据
*
* @param processInstanceId
* @return
*/
HistoricProcessInstance getHistoricProcessInstanceById(String processInstanceId);
/**
* 根据流程定义ID启动流程实例
*
* @return
*/
String startProcessInstanceById(StartProcessInstanceDTO processInstanceDto);
}
package com.junmp.junmpProcess.service;
public interface IFlowTaskService {
}
package com.junmp.junmpProcess.service;
public interface ISysDeployFormService {
}
package com.junmp.junmpProcess.service;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.junmp.junmpProcess.vo.ProcessVO;
import com.junmp.junmpProcess.vo.TemplateGroupVo;
import com.junmp.junmpProcess.vo.UpdateProcessVO;
import com.junmp.jyzb.api.bean.query.ProcessReq.FormReq;
import com.junmp.v2.common.bean.request.BaseRequest;
import com.junmp.v2.db.api.page.PageResult;
public interface ISysFormService {
/**
* 新增流程表单
*
* @param sysForm 流程表单
* @return 结果
*/
// public int insertSysForm(SysForm sysForm);
/**
* 创建表单
*
* @return
*/
Boolean createNewForm(FormReq processVO);
/**
* 创建表单
*
* @return
*/
Boolean createBpmn(ProcessVO processVO) throws JsonProcessingException;
/**
* 编辑表单
*
* @return
*/
Boolean updateForm(UpdateProcessVO process) throws JsonProcessingException;
/**
* 编辑表单名称
*
* @return
*/
Boolean updateFormName(UpdateProcessVO process);
/**
* 获取用户可见表单
*
* @return
*/
PageResult<TemplateGroupVo> getFormList(BaseRequest br);
}
package com.junmp.junmpProcess.service.impl;
import com.junmp.junmpProcess.entity.ProcessTemplates;
import com.junmp.junmpProcess.factory.FlowServiceFactory;
import com.junmp.junmpProcess.service.IFlowDefinitionService;
import com.junmp.junmpProcess.service.Repository.ProcessTemplateService;
import com.junmp.jyzb.api.bean.query.ProcessReq.SuspendOrActivateDefinitionReq;
import com.junmp.v2.common.bean.response.ApiRes;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.repository.ProcessDefinition;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* 流程定义
*
* @author Tony
* @date 2021-04-03
*/
@Service
@Slf4j
public class FlowDefinitionServiceImpl extends FlowServiceFactory implements IFlowDefinitionService {
@Autowired
private ProcessTemplateService processTemplateService;
@Override
public Boolean updateState(SuspendOrActivateDefinitionReq req) {
ProcessTemplates processTemplates = processTemplateService.getById(req.getTemplateId());
if (req.getIsStop() == true){
repositoryService.suspendProcessDefinitionById(req.getProcessDefinitionId(), true, null);
processTemplates.setIsStop(true);
}else {
processTemplates.setIsStop(false);
repositoryService.activateProcessDefinitionById(req.getProcessDefinitionId(), true, null);
}
processTemplates.setUpdated(new Date());
return processTemplateService.updateById(processTemplates);//更新表单明细表信息
}
@Override
public ApiRes<String> getLatestDefinitionId(String formId) {
String defId="";
ProcessDefinition ProDef=repositoryService.createProcessDefinitionQuery()
.processDefinitionKey("Process_"+formId)
.latestVersion()
.singleResult();
if(ProDef!=null)
{
defId=ProDef.getId();
}
return ApiRes.success(defId);
}
}
package com.junmp.junmpProcess.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.junmp.junmpProcess.dto.StartProcessInstanceDTO;
import com.junmp.junmpProcess.factory.FlowServiceFactory;
import com.junmp.junmpProcess.service.IFlowInstanceService;
import com.junmp.v2.auth.api.bean.login.LoginUser;
import com.junmp.v2.auth.api.context.LoginContext;
import com.junmp.v2.common.bean.response.ApiRes;
import lombok.extern.slf4j.Slf4j;
import org.flowable.common.engine.api.FlowableObjectNotFoundException;
import org.flowable.common.engine.impl.identity.Authentication;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.engine.runtime.ProcessInstanceBuilder;
import org.flowable.task.api.Task;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import static com.junmp.junmpProcess.common.CommonConstants.*;
import static com.junmp.junmpProcess.common.CommonConstants.BUSINESS_STATUS_1;
@Service
@Slf4j
public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlowInstanceService {
@Override
public void updateState(Integer state, String instanceId) {
// 激活
if (state == 1) {
runtimeService.activateProcessInstanceById(instanceId);
}
// 挂起
if (state == 2) {
runtimeService.suspendProcessInstanceById(instanceId);
}
}
/**
* 删除流程实例ID
*
* @param instanceId 流程实例ID
* @param deleteReason 删除原因
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String instanceId, String deleteReason) {
// 查询历史数据
HistoricProcessInstance historicProcessInstance = getHistoricProcessInstanceById(instanceId);
if (historicProcessInstance.getEndTime() != null) {
historyService.deleteHistoricProcessInstance(historicProcessInstance.getId());
return;
}
// 删除流程实例
runtimeService.deleteProcessInstance(instanceId, deleteReason);
// 删除历史流程实例
historyService.deleteHistoricProcessInstance(instanceId);
}
/**
* 根据实例ID查询历史实例数据
*
* @param processInstanceId
* @return
*/
@Override
public HistoricProcessInstance getHistoricProcessInstanceById(String processInstanceId) {
HistoricProcessInstance historicProcessInstance =
historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
if (Objects.isNull(historicProcessInstance)) {
throw new FlowableObjectNotFoundException("流程实例不存在: " + processInstanceId);
}
return historicProcessInstance;
}
@Override
public String startProcessInstanceById(StartProcessInstanceDTO processInstanceDto) {
LoginUser StartUser=new LoginUser();
if (processInstanceDto.getUserId()!=null)//优先拿接口中的信息,方便调试
{
StartUser.setUserId(Long.valueOf(processInstanceDto.getUserId()) );
}
else
{
StartUser= LoginContext.getContext().getLoginUser();
}
JSONObject formData = processInstanceDto.getFormData();
Authentication.setAuthenticatedUserId(StartUser.getUserId().toString());
Map<String,Object> processVariables= new HashMap<>();
processVariables.put(FORM_VAR,formData);
processVariables.put(ORDER_ID,processInstanceDto.getOrderId());
processVariables.put(ORDER_TYPE,processInstanceDto.getOrderType());
processVariables.put(START_USER_INFO,JSONObject.toJSONString(StartUser));
processVariables.put(PROCESS_STATUS,BUSINESS_STATUS_1);
ArrayList<LoginUser> userInfos = CollUtil.newArrayList(StartUser);
if (formData!=null)
{
Map formValue = JSONObject.parseObject(formData.toJSONString(), new TypeReference<Map>() {
});
processVariables.putAll(formValue);
}
ProcessInstanceBuilder processInstanceBuilder = runtimeService.createProcessInstanceBuilder();
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(processInstanceDto.getProcessDefinitionId())
.latestVersion().singleResult();
// if (processDefinition == null )
// {
// return ApiRes.failure("流程不存在或已挂起");
// } else if (processDefinition.isSuspended())
// {
// return ApiRes.failure("流程不存在或已挂起");
// }
ProcessInstance processInstance = processInstanceBuilder
.processDefinitionId(processInstanceDto.getProcessDefinitionId())
.variable("initiator",StartUser.getUserId())
.variables(processVariables)
.businessStatus(BUSINESS_STATUS_1)
.start();
//手动完成第一个任务
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
task.setAssignee(StartUser.getUserId().toString());
return processInstance.getProcessInstanceId();
}
}
package com.junmp.junmpProcess.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.PageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.junmp.junmpProcess.entity.ProcessTemplates;
import com.junmp.junmpProcess.mapper.ProcessTemplatesMapper;
import com.junmp.junmpProcess.mapper.TemplateGroupMapper;
import com.junmp.junmpProcess.service.ISysFormService;
import com.junmp.junmpProcess.service.Repository.ProcessTemplateService;
import com.junmp.junmpProcess.utils.IdWorker;
import com.junmp.junmpProcess.utils.SpringContextHolder;
import com.junmp.junmpProcess.vo.ProcessVO;
import com.junmp.junmpProcess.vo.TemplateGroupVo;
import com.junmp.junmpProcess.vo.UpdateProcessVO;
import com.junmp.jyzb.api.bean.query.ProcessReq.FormReq;
import com.junmp.v2.common.bean.request.BaseRequest;
import com.junmp.v2.db.api.factory.PageFactory;
import com.junmp.v2.db.api.page.PageResult;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.repository.Deployment;
import org.flowable.engine.repository.ProcessDefinition;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
import static com.junmp.junmpProcess.utils.BpmnConvert.toBpmn;
@Service
public class SysFormServiceImpl extends ServiceImpl<ProcessTemplatesMapper, ProcessTemplates> implements ISysFormService {
@Resource
private IdWorker idWorker;
@Autowired
private ProcessTemplateService processTemplateService;
@Resource
private RepositoryService repositoryService;
/**
* @Author: Zhaojw
* @Description: 创建新流程
* @DateTime: 2023/9/27 10:59
* @Params:
* @Return
*/
@Override
public Boolean createNewForm(FormReq req) {
ProcessTemplates processTemplates = ProcessTemplates.builder().build();
String templateId = idWorker.nextId()+"";
processTemplates.setTemplateId(templateId);
processTemplates.setFormName(req.getFormName());
processTemplates.setRemark(req.getRemark());
processTemplates.setIsStop(true);
Date date= new Date();
processTemplates.setUpdated(date);
processTemplateService.save(processTemplates);
return true;
}
@Override
public Boolean createBpmn(ProcessVO processVO) throws JsonProcessingException {
//流程定义
ObjectMapper objectMapper = new ObjectMapper();
JsonNode processJsonNode = objectMapper.readTree(processVO.getProcessJson());
JsonNode formJsonNode = objectMapper.readTree(processVO.getFormJson());
String formName=processVO.getFormName().toString();
ProcessTemplates processTemplates = ProcessTemplates.builder().build();
String templateId = idWorker.nextId()+"";
processTemplates.setTemplateId(templateId);
processTemplates.setFormJson(formJsonNode.toString());
processTemplates.setProcessJson(processJsonNode.toString());
processTemplates.setFormName(processVO.getFormName());
processTemplates.setIsStop(false);
Date date= new Date();
processTemplates.setUpdated(date);
processTemplateService.save(processTemplates);
//将json转换为bpmn
BpmnModel bpmnModel = toBpmn(processJsonNode,formJsonNode,formName,templateId);
Deployment deploy = repositoryService.createDeployment()
.addBpmnModel(formName+".bpmn20.xml", bpmnModel)
.name(formName)
.category(templateId)
.deploy();
return true;
}
@Override
public Boolean updateForm(UpdateProcessVO process) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
JsonNode processJsonNode = objectMapper.readTree(process.getProcessJson());
JsonNode formJsonNode = objectMapper.readTree(process.getFormJson());
String formName="";
ProcessTemplates processTemplates = processTemplateService.getById(process.getTemplateId());
if (ObjectUtil.isNotEmpty(process.getFormName()))
{
formName= process.getFormName().toString();
processTemplates.setFormName(process.getFormName());
}
else
{
formName = processTemplates.getFormName();
}
// processTemplates.setFormJson(formJsonNode.toString());//暂时用不到,以后会用
processTemplates.setProcessJson(process.getProcessJson().toString());
processTemplates.setUpdated(new Date());
processTemplateService.updateById(processTemplates);//更新表单明细表信息
BpmnModel bpmnModel = toBpmn(processJsonNode,formJsonNode,formName,process.getTemplateId());
Deployment deploy = repositoryService.createDeployment()
.addBpmnModel(formName+".bpmn20.xml", bpmnModel)
.name(formName)
.category(process.getTemplateId())
.deploy();
return true;
}
@Override
public Boolean updateFormName(UpdateProcessVO process) {
ProcessTemplates processTemplates = processTemplateService.getById(process.getTemplateId());
processTemplates.setFormName(process.getFormName());
processTemplates.setRemark(process.getRemark());
processTemplates.setUpdated(new Date());
return processTemplateService.updateById(processTemplates);//更新表单明细表信息
}
public PageResult<TemplateGroupVo> getFormList(BaseRequest br)
{
LambdaQueryWrapper<ProcessTemplates> wrapper = new LambdaQueryWrapper<ProcessTemplates>();
wrapper.orderByDesc(ProcessTemplates::getUpdated);
TemplateGroupMapper templateGroupMapper = SpringContextHolder.getBean(TemplateGroupMapper.class);
Page<ProcessTemplates> allformAndGroups =this.page(PageFactory.getDefaultPage(),wrapper);
// templateGroupMapper.getAllFormAndGroups();
Map<Integer, List<ProcessTemplates>> coverMap = new LinkedHashMap<>();
allformAndGroups.getRecords().forEach(fg -> {
List<ProcessTemplates> bos = coverMap.get(fg.getGroupId());
if (CollectionUtil.isEmpty(bos)) {
List<ProcessTemplates> list = new ArrayList<>();
list.add(fg);
coverMap.put(fg.getGroupId(), list);
} else {
bos.add(fg);
}
});
PageResult<TemplateGroupVo> pageResult=new PageResult<TemplateGroupVo>();
coverMap.forEach((key, val) -> {
List<TemplateGroupVo> templates = new ArrayList<>();
val.forEach(v -> {
if (ObjectUtil.isNotNull(v.getTemplateId())) {
String defId="";
ProcessDefinition ProDef=repositoryService.createProcessDefinitionQuery()
.processDefinitionKey("Process_"+v.getTemplateId())
.latestVersion()
.singleResult();
if(ProDef!=null)
{
defId=ProDef.getId();
}
templates.add(TemplateGroupVo.builder()
.formId(v.getTemplateId())
.remark(v.getRemark())
.formName(v.getFormName())
.isStop(v.getIsStop())
.updated(DateFormatUtils.format(v.getUpdated(),"yyyy年MM月dd日 HH时:mm分:ss秒"))
.templateId(v.getTemplateId())
.processDefinitionId(defId)
.build());
}
});
pageResult.setRecords( templates);
});
pageResult.setPageSize(allformAndGroups.getSize());
pageResult.setTotalRows( allformAndGroups.getTotal());
pageResult.setPageNo(allformAndGroups.getPages());
pageResult.setTotalPage(PageUtil.totalPage(Convert.toInt(pageResult.getTotalRows()), Convert.toInt(pageResult.getPageSize())));
return pageResult;
}
}
......@@ -21,6 +21,12 @@
GROUP BY su.user_id,su.real_name
</select>
<select id="QueryUser" resultMap="UserListDTO">
SELECT su.user_id,su.real_name FROM `sys_user` su
where su.user_id = ${userId}
</select>
<select id="QueryUserWithParentOrg" resultMap="UserListDTO">
SELECT
CASE
......@@ -38,4 +44,6 @@
JOIN sys_user_org AS userorg2 ON mainUser.org_parent_id = userorg2.org_id
JOIN sys_user AS user2 ON user2.user_id = userorg2.user_id;
</select>
</mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论