add:新增企标废止发布流程
This commit is contained in:
@@ -15,6 +15,7 @@ public enum ProcessTypeEnum {
|
||||
STANDARD_INTERPRET("标准解读流程", 2, "com.jero.modules.activiti.process.standardinterpret.service.impl.StandardInterpretFlow", "/workCenter/StandardInterpretationProcess", "/workCenter/StandardInterpretationProcess"),
|
||||
STANDARD_COMPLIANCE_CHECK("法规符合性排查流程", 3, "com.jero.modules.activiti.process.standardComplianceCheck.service.StandardComplianceCheckFlow", "/workCenter/RegulatoryComplianceCheckProcess", "/workCenter/RegulatoryComplianceCheckProcess"),
|
||||
MARKET_STANDARD_PUBLISH("市场清单发布流程", 4, "com.jero.modules.activiti.process.ms.service.impl.ProcessMarketStandardReleaseServiceImpl", "/workCenter/MarketListReleaseProcess", "/workCenter/MarketListReleaseProcess"),
|
||||
ENTERPRISE_STANDARD_ABOLISH_PUBLISH("企标废止发布流程", 5, "com.jero.modules.activiti.process.abolish.service.impl.ProcessAbolishReleaseServiceImpl", "/workCenter/AbolishReleaseProcess", "/workCenter/AbolishReleaseProcess"),
|
||||
;
|
||||
|
||||
private final String name;
|
||||
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
package com.jero.modules.activiti.process.abolish.controller;
|
||||
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.aspect.annotation.AutoLog;
|
||||
import com.jero.common.aspect.annotation.Translation;
|
||||
import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
||||
import com.jero.modules.activiti.process.abolish.entity.ProcessAbolishRelease;
|
||||
import com.jero.modules.activiti.process.abolish.service.IProcessAbolishReleaseService;
|
||||
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
|
||||
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
|
||||
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 企标废止发布流程 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author sz
|
||||
* @since 2024-09-05
|
||||
*/
|
||||
@Slf4j
|
||||
@Api(tags = "企标废止发布流程")
|
||||
@RestController
|
||||
@RequestMapping("/process/abolishRelease")
|
||||
public class ProcessAbolishReleaseController {
|
||||
|
||||
@Resource
|
||||
private IProcessAbolishReleaseService processAbolishReleaseService;
|
||||
|
||||
@Resource
|
||||
private ActFlowCommonService actFlowCommonService;
|
||||
|
||||
@AutoLog(value = "企标废止发布流程-发起流程")
|
||||
@ApiOperation(value = "企标废止发布流程-发起流程", notes = "企标废止发布流程-发起流程")
|
||||
@PostMapping(value = "/start")
|
||||
public Result<T> startProcess(@Validated @RequestBody ProcessInfoVO<ProcessAbolishRelease> processInfoVO) {
|
||||
processAbolishReleaseService.startProcess(processInfoVO);
|
||||
return Result.OK();
|
||||
}
|
||||
|
||||
@AutoLog(value = "企标废止发布流程-同意")
|
||||
@ApiOperation(value = "企标废止发布流程-同意", notes = "企标废止发布流程-同意")
|
||||
@PostMapping("/agree")
|
||||
public Result<T> agree(@Validated @RequestBody ProcessInfoVO<ProcessAbolishRelease> processInfoVO) {
|
||||
processAbolishReleaseService.approveTask(processInfoVO, true);
|
||||
return Result.OK();
|
||||
}
|
||||
|
||||
@AutoLog(value = "企标废止发布流程-驳回")
|
||||
@ApiOperation(value = "企标废止发布流程-驳回", notes = "企标废止发布流程-驳回")
|
||||
@PostMapping("/reject")
|
||||
public Result<T> reject(@Validated @RequestBody ProcessInfoVO<ProcessAbolishRelease> processInfoVO) {
|
||||
processAbolishReleaseService.approveTask(processInfoVO, false);
|
||||
return Result.OK();
|
||||
}
|
||||
|
||||
@AutoLog(value = "企标废止发布流程-提交")
|
||||
@ApiOperation(value = "企标废止发布流程-提交", notes = "企标废止发布流程-提交")
|
||||
@PostMapping("/submit")
|
||||
public Result<T> submit(@Validated @RequestBody ProcessInfoVO<ProcessAbolishRelease> processInfoVO) {
|
||||
processAbolishReleaseService.submit(processInfoVO);
|
||||
return Result.OK();
|
||||
}
|
||||
|
||||
@AutoLog(value = "企标废止发布流程-办理")
|
||||
@ApiOperation(value="企标废止发布流程-办理", notes="企标废止发布流程-办理")
|
||||
@GetMapping("/handle/{taskId}")
|
||||
@Translation
|
||||
public Result<?> handle(@PathVariable("taskId") String taskId) {
|
||||
ProcessDraft draft = actFlowCommonService.getExistDraftByTaskId(taskId, ProcessTypeEnum.ENTERPRISE_STANDARD_ABOLISH_PUBLISH);
|
||||
if (draft != null) {
|
||||
return Result.OK(draft);
|
||||
}
|
||||
return Result.OK(processAbolishReleaseService.getHandleData(taskId));
|
||||
}
|
||||
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
package com.jero.modules.activiti.process.abolish.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 企标废止发布流程
|
||||
* </p>
|
||||
*
|
||||
* @author sz
|
||||
* @since 2024-09-05
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("process_abolish_release")
|
||||
@ApiModel(value="ProcessAbolishRelease对象", description="企标废止发布流程")
|
||||
public class ProcessAbolishRelease implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "主键ID")
|
||||
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty(value = "流程实例Id")
|
||||
private String processInstanceId;
|
||||
|
||||
@ApiModelProperty(value = "标准编号")
|
||||
private String standardNumber;
|
||||
|
||||
@ApiModelProperty(value = "标准名称")
|
||||
private String standardName;
|
||||
|
||||
@ApiModelProperty(value = "起草人")
|
||||
private String drafter;
|
||||
|
||||
@ApiModelProperty(value = "主起草部门")
|
||||
private String drafterDepart;
|
||||
|
||||
@ApiModelProperty(value = "关联部门")
|
||||
private String relatedDepart;
|
||||
|
||||
@ApiModelProperty(value = "废止理由")
|
||||
private String abolishReason;
|
||||
|
||||
@ApiModelProperty(value = "附件文件id")
|
||||
private String fileIds;
|
||||
|
||||
@ApiModelProperty(value = "0表示未删除,1表示删除")
|
||||
private Integer delFlag;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createBy;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "更新人")
|
||||
private String updateBy;
|
||||
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private Date updateTime;
|
||||
|
||||
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
package com.jero.modules.activiti.process.abolish.listener;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.jero.modules.activiti.process.abolish.entity.ProcessAbolishRelease;
|
||||
import com.jero.modules.activiti.process.abolish.service.IProcessAbolishReleaseService;
|
||||
import com.jero.modules.activiti.process.common.enums.StandardStateEnum;
|
||||
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
|
||||
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
|
||||
import com.jero.modules.tag.enums.TableNameEnum;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.engine.delegate.DelegateExecution;
|
||||
import org.activiti.engine.delegate.ExecutionListener;
|
||||
import org.springframework.stereotype.Component;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @author: Mzaxd
|
||||
* @Date: 2023/10/10 14:14
|
||||
*/
|
||||
@Slf4j
|
||||
@Component("ProcessESAbolishEndListener")
|
||||
public class ProcessESAbolishEndListener implements ExecutionListener {
|
||||
|
||||
@Resource
|
||||
private ILawsEnterpriseStandardService esService;
|
||||
|
||||
@Resource
|
||||
private IProcessAbolishReleaseService processAbolishReleaseService;
|
||||
|
||||
/**
|
||||
* 企标废止流程结束之后需要把标准状态设为废止
|
||||
* @param delegateExecution
|
||||
*/
|
||||
@Override
|
||||
public void notify(DelegateExecution delegateExecution) {
|
||||
log.info("企标废止流程结束 监听执行器开始执行");
|
||||
// 找到流程实例Id
|
||||
String processInstanceId = delegateExecution.getProcessInstanceId();
|
||||
LambdaQueryWrapper<ProcessAbolishRelease> abolishLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
abolishLambdaQueryWrapper.eq(ProcessAbolishRelease::getProcessInstanceId, processInstanceId);
|
||||
ProcessAbolishRelease abolish = processAbolishReleaseService.getOne(abolishLambdaQueryWrapper);
|
||||
String standNo = abolish.getStandardNumber();
|
||||
LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>();
|
||||
esWrapper.eq(LawsEnterpriseStandard::getStandardNumber, standNo);
|
||||
LawsEnterpriseStandard one = esService.getOne(esWrapper);
|
||||
log.info("企标废止流程监听执行器开始执行,企标编号为:{}", standNo);
|
||||
esService.update(new LambdaUpdateWrapper<LawsEnterpriseStandard>()
|
||||
.set(LawsEnterpriseStandard::getStandardState, StandardStateEnum.ABOLISH.getStateValue())
|
||||
.eq(LawsEnterpriseStandard::getStandardNumber, standNo));
|
||||
// todo 如果需要发消息可以在此处编写
|
||||
log.info("企标废止流程结束监听执行器执行结束");
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package com.jero.modules.activiti.process.abolish.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.jero.modules.activiti.process.abolish.entity.ProcessAbolishRelease;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 企标废止发布流程 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author sz
|
||||
* @since 2024-09-05
|
||||
*/
|
||||
public interface ProcessAbolishReleaseMapper extends BaseMapper<ProcessAbolishRelease> {
|
||||
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.jero.modules.activiti.process.abolish.mapper.ProcessAbolishReleaseMapper">
|
||||
|
||||
</mapper>
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package com.jero.modules.activiti.process.abolish.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jero.modules.activiti.process.abolish.entity.ProcessAbolishRelease;
|
||||
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
|
||||
import com.jero.modules.activiti.process.ni.entity.ProcessNewStandardImport;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 企标废止发布流程 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author sz
|
||||
* @since 2024-09-05
|
||||
*/
|
||||
public interface IProcessAbolishReleaseService extends IService<ProcessAbolishRelease> {
|
||||
|
||||
void startProcess(ProcessInfoVO<ProcessAbolishRelease> processInfoVO);
|
||||
|
||||
void approveTask(ProcessInfoVO<ProcessAbolishRelease> processInfoVO, boolean pass);
|
||||
|
||||
ProcessInfoVO<ProcessAbolishRelease> getHandleData(String taskId);
|
||||
|
||||
void submit(ProcessInfoVO<ProcessAbolishRelease> processInfoVO);
|
||||
}
|
||||
+281
@@ -0,0 +1,281 @@
|
||||
package com.jero.modules.activiti.process.abolish.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.modules.activiti.common.ActivitiCommon;
|
||||
import com.jero.modules.activiti.entity.ProcessAll;
|
||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
||||
import com.jero.modules.activiti.process.abolish.entity.ProcessAbolishRelease;
|
||||
import com.jero.modules.activiti.process.abolish.mapper.ProcessAbolishReleaseMapper;
|
||||
import com.jero.modules.activiti.process.abolish.service.IProcessAbolishReleaseService;
|
||||
import com.jero.modules.activiti.process.common.enums.ProcessType;
|
||||
import com.jero.modules.activiti.process.common.enums.StandardStateEnum;
|
||||
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
|
||||
import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO;
|
||||
import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO;
|
||||
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
|
||||
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
|
||||
import com.jero.modules.activiti.service.ProcessAllService;
|
||||
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||
import com.jero.modules.activiti.service.ProcessNodeLinkService;
|
||||
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
|
||||
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
|
||||
import com.jero.modules.sys.utils.UserUtils;
|
||||
import org.activiti.engine.RuntimeService;
|
||||
import org.activiti.engine.TaskService;
|
||||
import org.activiti.engine.runtime.ProcessInstance;
|
||||
import org.activiti.engine.task.Task;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import static com.jero.modules.activiti.common.ActivitiCommon.PASS;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 企标废止发布流程 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author sz
|
||||
* @since 2024-09-05
|
||||
*/
|
||||
@Service
|
||||
@Transactional(rollbackFor = JeroBootException.class)
|
||||
public class ProcessAbolishReleaseServiceImpl extends ServiceImpl<ProcessAbolishReleaseMapper, ProcessAbolishRelease> implements IProcessAbolishReleaseService {
|
||||
|
||||
@Resource
|
||||
private ActFlowCommonService actFlowCommonService;
|
||||
@Resource
|
||||
private ProcessNodeLinkService processNodeLinkService;
|
||||
@Resource
|
||||
private ProcessApprovalRecordService processApprovalRecordService;
|
||||
@Resource
|
||||
private ProcessAllService processAllService;
|
||||
@Resource
|
||||
private RuntimeService runtimeService;
|
||||
@Resource
|
||||
private IProcessHandleService processHandleService;
|
||||
@Resource
|
||||
private TaskService taskService;
|
||||
@Resource
|
||||
private ILawsEnterpriseStandardService esService;
|
||||
|
||||
@Override
|
||||
public void startProcess(ProcessInfoVO<ProcessAbolishRelease> processInfoVO) {
|
||||
// 流程Key
|
||||
String processDefinitionKey = ProcessType.ENTERPRISE_STANDARD_ABOLISH_PUBLISH.getProcessKey();
|
||||
// 流程信息
|
||||
BasicProcessInfoDTO processInfo = processInfoVO.getBasicProcessInfoDTO();
|
||||
// 任务信息
|
||||
BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO();
|
||||
// 人员信息
|
||||
Map<String, Object> userInfoMap = processInfoVO.getUserInfoMap();
|
||||
// 业务数据
|
||||
ProcessAbolishRelease businessInfoDTO = processInfoVO.getBusinessInfoDTO();
|
||||
// 设置流程变量
|
||||
Map<String, Object> actVariables = setVariables(userInfoMap);
|
||||
// 删除草稿
|
||||
actFlowCommonService.getExistDraftAndRemove(processInfoVO.getDraftId());
|
||||
// 启动流程
|
||||
ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables);
|
||||
// 获取流程实例ID
|
||||
String processDefinitionId = processInstance.getProcessDefinitionId();
|
||||
String processInstanceId = processInstance.getId();
|
||||
businessInfoDTO.setProcessInstanceId(processInstanceId);
|
||||
processInfo.setProcessInstanceId(processInstanceId);
|
||||
processInfo.setProcessDefinitionId(processDefinitionId);
|
||||
processInfo.setProcessType(ProcessTypeEnum.ENTERPRISE_STANDARD_ABOLISH_PUBLISH.getValue());
|
||||
// 第一个节点业务数据处理
|
||||
this.startNodeBusProcess(processInfoVO);
|
||||
// 保存选人信息
|
||||
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, changeVariables(userInfoMap));
|
||||
// 当前用户Id
|
||||
String userId = UserUtils.getUserId();
|
||||
// 获取第一个任务的taskId
|
||||
String taskId = actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId);
|
||||
processTask.setTaskId(taskId);
|
||||
// 保存第一个节点的草稿
|
||||
processHandleService.saveToDraft(processInfoVO, UserUtils.getUserId());
|
||||
// 更新审批表为完成,填充数据
|
||||
actFlowCommonService.updateApprovalInfo(processTask, taskId);
|
||||
// 根据流程实例id更新流程总表
|
||||
actFlowCommonService.updateProcessAll(processInfo);
|
||||
// 自动完成第一个任务
|
||||
actFlowCommonService.completeTask(taskId, userId);
|
||||
// 保存快照
|
||||
processHandleService.saveToSnapshot(processInfoVO,userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void approveTask(ProcessInfoVO<ProcessAbolishRelease> processInfoVO, boolean pass) {
|
||||
BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO();
|
||||
String taskId = processTask.getTaskId();
|
||||
// 获取task
|
||||
if (StringUtils.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) {
|
||||
throw new JeroBootException("taskId为空或任务不存在");
|
||||
}
|
||||
// 获取当前节点的id
|
||||
ProcessApprovalRecord processApprovalRecord = actFlowCommonService.getNodeIdByTaskId(taskId);
|
||||
String xmlNodeId = processApprovalRecord.getNodeId();
|
||||
//任务Id 查询任务对象
|
||||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
||||
String processInstanceId = task.getProcessInstanceId();
|
||||
String userId = actFlowCommonService.getOriginTaskAssignee(taskId);
|
||||
if(Objects.isNull(task)){
|
||||
throw new JeroBootException("找不到对应任务");
|
||||
}
|
||||
if (pass && task.getName().equals("授权人审批")) {
|
||||
ProcessAbolishRelease businessInfoDTO = this.getOne(new LambdaQueryWrapper<ProcessAbolishRelease>()
|
||||
.eq(ProcessAbolishRelease::getProcessInstanceId, processInstanceId));
|
||||
String standardNumber = businessInfoDTO.getStandardNumber();
|
||||
LawsEnterpriseStandard es = esService.getOne(new LambdaQueryWrapper<LawsEnterpriseStandard>()
|
||||
.eq(LawsEnterpriseStandard::getStandardNumber, standardNumber));
|
||||
if (StandardStateEnum.ABOLISH.getStateValue().equals(es.getStandardState())) {
|
||||
throw new JeroBootException("该标准已废止,需要驳回重新选择");
|
||||
}
|
||||
}
|
||||
if(Objects.isNull(processTask.getCommitFlag())){
|
||||
processTask.setCommitFlag(pass ? ActivitiCommon.COMMIT_FLAG1 : ActivitiCommon.COMMIT_FLAG2);
|
||||
}
|
||||
// 更新审批表为完成,填充数据
|
||||
actFlowCommonService.updateApprovalInfo(processTask, taskId);
|
||||
// 设置流程变量
|
||||
runtimeService.setVariable(processInstanceId, PASS, pass);
|
||||
// 审批节点
|
||||
actFlowCommonService.completeTask(taskId, userId);
|
||||
// 驳回,结束所有节点
|
||||
processApprovalRecordService.updateApprovalRecordFinishFlag(pass, taskId, xmlNodeId, processInstanceId);
|
||||
// 保存快照
|
||||
// 获取流程通用数据
|
||||
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
|
||||
if(!Objects.isNull(process)){
|
||||
BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO();
|
||||
basicProcessInfoDTO.setProcessName(process.getPrcName());
|
||||
basicProcessInfoDTO.setProcessType(process.getPrcType());
|
||||
basicProcessInfoDTO.setProcessDefinitionId(process.getProcessDefinitionId());
|
||||
basicProcessInfoDTO.setProcessInstanceId(process.getProcessInstanceId());
|
||||
basicProcessInfoDTO.setProcessDescription(process.getPrcMes());
|
||||
basicProcessInfoDTO.setProcessDueDate(process.getDueTime());
|
||||
processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO);
|
||||
// 保存快照
|
||||
processHandleService.saveToSnapshot(processInfoVO,userId);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void submit(ProcessInfoVO<ProcessAbolishRelease> processInfoVO) {
|
||||
BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO();
|
||||
String taskId = processTask.getTaskId();
|
||||
// 获取task
|
||||
if (StringUtils.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) {
|
||||
throw new JeroBootException("taskId为空或任务不存在");
|
||||
}
|
||||
//任务Id 查询任务对象
|
||||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
||||
if(Objects.isNull(task)){
|
||||
throw new JeroBootException("找不到对应任务");
|
||||
}
|
||||
// 人员信息
|
||||
Map<String, Object> userInfoMap = processInfoVO.getUserInfoMap();
|
||||
// 设置流程变量
|
||||
Map<String, Object> actVariables = setVariables(userInfoMap);
|
||||
String processInstanceId = task.getProcessInstanceId();
|
||||
runtimeService.setVariables(processInstanceId,actVariables);
|
||||
String userId = actFlowCommonService.getOriginTaskAssignee(taskId);
|
||||
// 发起节点 更新业务数据
|
||||
startNodeBusProcess(processInfoVO);
|
||||
// 更新审批表为完成,填充数据
|
||||
actFlowCommonService.updateApprovalInfo(processTask, taskId);
|
||||
// 审批节点
|
||||
actFlowCommonService.completeTask(taskId, userId);
|
||||
// 保存快照
|
||||
// 获取流程通用数据
|
||||
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
|
||||
if(!Objects.isNull(process)){
|
||||
BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO();
|
||||
basicProcessInfoDTO.setProcessName(process.getPrcName());
|
||||
basicProcessInfoDTO.setProcessType(process.getPrcType());
|
||||
basicProcessInfoDTO.setProcessDefinitionId(process.getProcessDefinitionId());
|
||||
basicProcessInfoDTO.setProcessInstanceId(process.getProcessInstanceId());
|
||||
basicProcessInfoDTO.setProcessDescription(process.getPrcMes());
|
||||
basicProcessInfoDTO.setProcessDueDate(process.getDueTime());
|
||||
processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO);
|
||||
// 保存快照
|
||||
processHandleService.saveToSnapshot(processInfoVO,userId);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProcessInfoVO<ProcessAbolishRelease> getHandleData(String taskId) {
|
||||
if (!actFlowCommonService.taskExists(taskId)) {
|
||||
throw new JeroBootException("任务不存在");
|
||||
}
|
||||
ProcessInfoVO<ProcessAbolishRelease> result = new ProcessInfoVO<>();
|
||||
// 使用流程引擎根据taskId找到流程实例Id
|
||||
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
|
||||
// 获取流程通用数据
|
||||
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
|
||||
if(!Objects.isNull(process)){
|
||||
BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO();
|
||||
basicProcessInfoDTO.setProcessName(process.getPrcName());
|
||||
basicProcessInfoDTO.setProcessType(process.getPrcType());
|
||||
basicProcessInfoDTO.setProcessDefinitionId(process.getProcessDefinitionId());
|
||||
basicProcessInfoDTO.setProcessInstanceId(process.getProcessInstanceId());
|
||||
basicProcessInfoDTO.setProcessDescription(process.getPrcMes());
|
||||
basicProcessInfoDTO.setProcessDueDate(process.getDueTime());
|
||||
result.setBasicProcessInfoDTO(basicProcessInfoDTO);
|
||||
}
|
||||
// 获取流程实例数据
|
||||
LambdaQueryWrapper<ProcessAbolishRelease> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(ProcessAbolishRelease::getProcessInstanceId, processInstanceId);
|
||||
ProcessAbolishRelease data = getOne(lambdaQueryWrapper,false);
|
||||
result.setBusinessInfoDTO(data);
|
||||
return result;
|
||||
}
|
||||
|
||||
private void startNodeBusProcess(ProcessInfoVO<ProcessAbolishRelease> processInfoVO) {
|
||||
ProcessAbolishRelease businessInfoDTO = processInfoVO.getBusinessInfoDTO();
|
||||
saveOrUpdate(businessInfoDTO);
|
||||
}
|
||||
|
||||
private Map<String, Object> setVariables(Map<String, Object> userInfoMap) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
// 人员信息
|
||||
userInfoMap.forEach((key, value) -> {
|
||||
if(Objects.equals("checkUserLeader1List",key + "List") ||
|
||||
Objects.equals("checkUserLeader2List",key + "List") ||
|
||||
Objects.equals("checkUserLeader3List",key + "List") ||
|
||||
Objects.equals("checkUserLeader4List",key + "List") ||
|
||||
Objects.equals("checkUserLeader5List",key + "List") ||
|
||||
Objects.equals("checkUserLeader6List",key + "List")){
|
||||
map.put(key, value);
|
||||
map.put(key + "List", Arrays.asList(value.toString().split(",")));
|
||||
return;
|
||||
}
|
||||
map.put(key, value);
|
||||
});
|
||||
return map;
|
||||
}
|
||||
|
||||
private Map<String, Object> changeVariables(Map<String, Object> userInfoMap) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
// 人员信息
|
||||
userInfoMap.forEach((key, value) -> {
|
||||
if(Objects.equals("checkUserLeader1List",key + "List") ||
|
||||
Objects.equals("checkUserLeader4List",key + "List") ||
|
||||
Objects.equals("checkUserLeader5List",key + "List") ||
|
||||
Objects.equals("checkUserLeader6List",key + "List")){
|
||||
map.put(key + "List", value);
|
||||
return;
|
||||
}
|
||||
map.put(key, value);
|
||||
});
|
||||
return map;
|
||||
}
|
||||
}
|
||||
+1
@@ -15,6 +15,7 @@ public enum ProcessType {
|
||||
STANDARD_INTERPRET("标准解读流程", "2", "standard_interpret", "StandardInterpretFlowServiceImpl"),
|
||||
STANDARD_COMPLIANCE_CHECK("法规符合性评估流程", "3", "laws-evaluation-main", "ProcessStandardComplianceCheckServiceImpl"),
|
||||
MARKET_STANDARD_PUBLISH("市场清单发布流程", "4", "market_standard_publish", "ProcessNewStandardImportServiceImpl"),
|
||||
ENTERPRISE_STANDARD_ABOLISH_PUBLISH("企标废止发布流程", "5", "enterprise_standard_abolish_publish", "ProcessAbolishReleaseServiceImpl"),
|
||||
;
|
||||
|
||||
private final String name;
|
||||
|
||||
@@ -57,8 +57,8 @@ public class LawsClubMeeting implements Serializable {
|
||||
@Excel(name = "会议费用", width = 20)
|
||||
private String meetingCost;
|
||||
|
||||
@ApiModelProperty(value = "线下/线上地点")
|
||||
@Excel(name = "线下/线上地点", width = 20)
|
||||
@ApiModelProperty(value = "线上/线下地点")
|
||||
@Excel(name = "线上/线下地点", width = 20)
|
||||
private String meetingPlace;
|
||||
|
||||
@ApiModelProperty(value = "计划完成日期")
|
||||
|
||||
+1
@@ -62,6 +62,7 @@ public class LawsClubResearchInformation implements Serializable {
|
||||
|
||||
@ApiModelProperty(value = "专业接口人")
|
||||
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
|
||||
@Excel(name = "专业接口人", width = 20, dicText = "realname", dicCode = "id", dictTable = "sys_user")
|
||||
private String specializedInterfacePerson;
|
||||
|
||||
@ApiModelProperty(value = "专业模块")
|
||||
|
||||
+1
-3
@@ -226,13 +226,11 @@ public class LawsClubMeetingServiceImpl extends ServiceImpl<LawsClubMeetingMappe
|
||||
//解压缩
|
||||
String zipEntryName = FileUnZip.unZipFiles2(path +File.separator+ file.getOriginalFilename(), path);
|
||||
// 1.获取其中的文件,
|
||||
// List<File> fileList = FileUnZip.readExcelFile(zipEntryName);
|
||||
File zipFile = new File(zipEntryName);
|
||||
List<File> fileList = new ArrayList<>();
|
||||
if (zipFile.isDirectory()) {
|
||||
File[] files = zipFile.listFiles();
|
||||
for (File fi : files) {
|
||||
// 对文件进行过滤,只读取Excel文件
|
||||
fileList.add(fi);
|
||||
}
|
||||
}
|
||||
@@ -272,7 +270,6 @@ public class LawsClubMeetingServiceImpl extends ServiceImpl<LawsClubMeetingMappe
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private StringBuilder validateExcelData(List<LawsClubMeetingExcel> meetingExcels, Map<String, File> unZipFileMap) throws IOException{
|
||||
StringBuilder msg = new StringBuilder();
|
||||
// 拿到这个流程的名称
|
||||
@@ -459,6 +456,7 @@ public class LawsClubMeetingServiceImpl extends ServiceImpl<LawsClubMeetingMappe
|
||||
} else if (currentMeeting != null && isMemberValid) {
|
||||
// 如果会议记录无效但成员记录有效,将成员信息添加到当前有效会议的成员列表中
|
||||
LawsClubMeetingMemberExcel member = new LawsClubMeetingMemberExcel();
|
||||
member.setMemberId(record.getMemberId());
|
||||
member.setDepartId(record.getDepartId());
|
||||
member.setMeetingSpecializedModule(record.getMeetingSpecializedModule());
|
||||
member.setMeetingFileId(record.getMeetingFileId());
|
||||
|
||||
@@ -0,0 +1,237 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef">
|
||||
<process id="enterprise_standard_abolish_publish" name="企标废止" isExecutable="true">
|
||||
<documentation>企标废止流程</documentation>
|
||||
<startEvent id="sid-8d441ae4-a274-41d7-8c7b-3b95b0402768" name="开始"/>
|
||||
<userTask id="sid-b8761461-ccc9-4b50-9b57-f2344eab3346" name="起草人发起" activiti:assignee="${importStartUser}"/>
|
||||
<sequenceFlow id="sid-50f37ee8-0aff-4855-bca5-867898d442fb" sourceRef="sid-8d441ae4-a274-41d7-8c7b-3b95b0402768" targetRef="sid-b8761461-ccc9-4b50-9b57-f2344eab3346"/>
|
||||
<exclusiveGateway id="sid-291d8730-f124-496a-a3dc-275e517f2652"/>
|
||||
<sequenceFlow id="sid-5f7f3396-767c-454f-9be6-10297e2e681a" sourceRef="sid-b8761461-ccc9-4b50-9b57-f2344eab3346" targetRef="sid-291d8730-f124-496a-a3dc-275e517f2652"/>
|
||||
<userTask id="sid-33ce6ca2-b593-463f-87bb-9a875e356c45" name="部门经理审批" activiti:assignee="${checkUserLeader1}">
|
||||
<multiInstanceLoopCharacteristics isSequential="false" activiti:collection="checkUserLeader1List" activiti:elementVariable="checkUserLeader1">
|
||||
<completionCondition>${!pass}</completionCondition>
|
||||
</multiInstanceLoopCharacteristics>
|
||||
</userTask>
|
||||
<sequenceFlow id="sid-148df960-06ef-4548-9b70-d4445aba3a1a" sourceRef="sid-291d8730-f124-496a-a3dc-275e517f2652" targetRef="sid-33ce6ca2-b593-463f-87bb-9a875e356c45">
|
||||
<conditionExpression xsi:type="tFormalExpression"/>
|
||||
</sequenceFlow>
|
||||
<exclusiveGateway id="sid-8d8f31d1-f839-4a59-9acf-cec8ad734660"/>
|
||||
<sequenceFlow id="sid-4f957b28-312e-4e65-a37e-e9097fa8d1f4" sourceRef="sid-33ce6ca2-b593-463f-87bb-9a875e356c45" targetRef="sid-8d8f31d1-f839-4a59-9acf-cec8ad734660"/>
|
||||
<userTask id="sid-516d0d52-f3bc-4388-b3d8-7a5ebdbd1e6a" name="法规部门处理人审批" activiti:assignee="${checkUserLeader2}"/>
|
||||
<sequenceFlow id="sid-16642411-596a-4b20-8cff-ee607ea5f25c" sourceRef="sid-8d8f31d1-f839-4a59-9acf-cec8ad734660" targetRef="sid-516d0d52-f3bc-4388-b3d8-7a5ebdbd1e6a" name="通过">
|
||||
<conditionExpression xsi:type="tFormalExpression">${pass}</conditionExpression>
|
||||
</sequenceFlow>
|
||||
<exclusiveGateway id="sid-013550bb-e799-47d1-83d0-f7c9ba70c5fe"/>
|
||||
<sequenceFlow id="sid-a104fa64-65aa-48c1-a204-9edc47a2e310" sourceRef="sid-516d0d52-f3bc-4388-b3d8-7a5ebdbd1e6a" targetRef="sid-013550bb-e799-47d1-83d0-f7c9ba70c5fe"/>
|
||||
<sequenceFlow id="sid-40813dc1-c806-4e8c-a91f-fa16ac62b3fe" sourceRef="sid-8d8f31d1-f839-4a59-9acf-cec8ad734660" targetRef="sid-b8761461-ccc9-4b50-9b57-f2344eab3346" name="驳回">
|
||||
<conditionExpression xsi:type="tFormalExpression">${!pass}</conditionExpression>
|
||||
</sequenceFlow>
|
||||
<sequenceFlow id="sid-83244c37-5bb1-4db8-99fb-8f946c33c1d9" sourceRef="sid-013550bb-e799-47d1-83d0-f7c9ba70c5fe" targetRef="sid-b8761461-ccc9-4b50-9b57-f2344eab3346" name="驳回">
|
||||
<conditionExpression xsi:type="tFormalExpression">${!pass}</conditionExpression>
|
||||
</sequenceFlow>
|
||||
<userTask id="sid-8bcb7238-381f-44de-a15e-9383a1ce87ff" name="法规部门经理审批" activiti:assignee="${checkUserLeader3}"/>
|
||||
<sequenceFlow id="sid-056352d4-51aa-4085-a70d-5ec91e43fc66" sourceRef="sid-013550bb-e799-47d1-83d0-f7c9ba70c5fe" targetRef="sid-8bcb7238-381f-44de-a15e-9383a1ce87ff" name="通过">
|
||||
<conditionExpression xsi:type="tFormalExpression">${pass}</conditionExpression>
|
||||
</sequenceFlow>
|
||||
<exclusiveGateway id="sid-195839b5-9aba-4f88-bdee-e5df5ad2c2a4"/>
|
||||
<sequenceFlow id="sid-b28430a5-602d-4c9d-b819-948ed23545cc" sourceRef="sid-8bcb7238-381f-44de-a15e-9383a1ce87ff" targetRef="sid-195839b5-9aba-4f88-bdee-e5df5ad2c2a4"/>
|
||||
<userTask id="sid-f459d33d-12a8-4279-b25e-2d2d57b256f9" name="高级经理审批" activiti:assignee="${checkUserLeader4}">
|
||||
<multiInstanceLoopCharacteristics isSequential="false" activiti:collection="checkUserLeader4List" activiti:elementVariable="checkUserLeader4">
|
||||
<completionCondition>${!pass}</completionCondition>
|
||||
</multiInstanceLoopCharacteristics>
|
||||
</userTask>
|
||||
<sequenceFlow id="sid-cf57e667-8f81-4b49-9120-36c043b3d9e5" sourceRef="sid-195839b5-9aba-4f88-bdee-e5df5ad2c2a4" targetRef="sid-f459d33d-12a8-4279-b25e-2d2d57b256f9" name="通过">
|
||||
<conditionExpression xsi:type="tFormalExpression">${pass}</conditionExpression>
|
||||
</sequenceFlow>
|
||||
<exclusiveGateway id="sid-1d4e06ca-4162-4149-902b-569779071f60"/>
|
||||
<sequenceFlow id="sid-baf4a875-3935-4cdc-986d-5e00ca04ddd3" sourceRef="sid-f459d33d-12a8-4279-b25e-2d2d57b256f9" targetRef="sid-1d4e06ca-4162-4149-902b-569779071f60"/>
|
||||
<userTask id="sid-fc053c4d-804f-41c9-af47-cd77600cf6d1" name="总监审批" activiti:assignee="${checkUserLeader5}">
|
||||
<multiInstanceLoopCharacteristics isSequential="false" activiti:collection="checkUserLeader5List" activiti:elementVariable="checkUserLeader5">
|
||||
<completionCondition>${!pass}</completionCondition>
|
||||
</multiInstanceLoopCharacteristics>
|
||||
</userTask>
|
||||
<sequenceFlow id="sid-4bd9e242-081a-4b2b-a88c-7d85b003f057" sourceRef="sid-1d4e06ca-4162-4149-902b-569779071f60" targetRef="sid-fc053c4d-804f-41c9-af47-cd77600cf6d1" name="通过">
|
||||
<conditionExpression xsi:type="tFormalExpression">${pass}</conditionExpression>
|
||||
</sequenceFlow>
|
||||
<exclusiveGateway id="sid-fefd80fb-f234-4fea-87e7-de958f25111a"/>
|
||||
<sequenceFlow id="sid-94b6733c-43b0-4f04-9228-7b654b531a43" sourceRef="sid-fc053c4d-804f-41c9-af47-cd77600cf6d1" targetRef="sid-fefd80fb-f234-4fea-87e7-de958f25111a"/>
|
||||
<userTask id="sid-e569a71d-ffa4-4d1e-ae7e-0ea24cb6df8c" name="授权人审批" activiti:assignee="${checkUserLeader6}">
|
||||
<multiInstanceLoopCharacteristics isSequential="false" activiti:collection="checkUserLeader6List" activiti:elementVariable="checkUserLeader6">
|
||||
<completionCondition>${!pass}</completionCondition>
|
||||
</multiInstanceLoopCharacteristics>
|
||||
</userTask>
|
||||
<sequenceFlow id="sid-9fea5c28-bd1d-4134-b7c2-13a19662ddcb" sourceRef="sid-fefd80fb-f234-4fea-87e7-de958f25111a" targetRef="sid-e569a71d-ffa4-4d1e-ae7e-0ea24cb6df8c" name="通过">
|
||||
<conditionExpression xsi:type="tFormalExpression">${pass}</conditionExpression>
|
||||
</sequenceFlow>
|
||||
<exclusiveGateway id="sid-c5ac1290-2bb7-437a-a7c0-8d69c023c7eb"/>
|
||||
<sequenceFlow id="sid-9ca041df-ee5e-44b8-b127-04f1fb2cb6f5" sourceRef="sid-e569a71d-ffa4-4d1e-ae7e-0ea24cb6df8c" targetRef="sid-c5ac1290-2bb7-437a-a7c0-8d69c023c7eb"/>
|
||||
<endEvent id="sid-80b49dd1-7efb-452f-a00b-bc15b978b4d7" name="结束">
|
||||
<extensionElements>
|
||||
<activiti:executionListener event="end" delegateExpression="${ProcessESAbolishEndListener}"/>
|
||||
</extensionElements>
|
||||
</endEvent>
|
||||
<sequenceFlow id="sid-9c23b612-1e5b-4926-afda-7e85c507f791" sourceRef="sid-c5ac1290-2bb7-437a-a7c0-8d69c023c7eb" targetRef="sid-80b49dd1-7efb-452f-a00b-bc15b978b4d7" name="通过">
|
||||
<conditionExpression xsi:type="tFormalExpression">${pass}</conditionExpression>
|
||||
</sequenceFlow>
|
||||
<sequenceFlow id="sid-a59cd2c2-e417-452c-a7fc-b3afa7c58757" sourceRef="sid-195839b5-9aba-4f88-bdee-e5df5ad2c2a4" targetRef="sid-b8761461-ccc9-4b50-9b57-f2344eab3346" name="驳回">
|
||||
<conditionExpression xsi:type="tFormalExpression">${!pass}</conditionExpression>
|
||||
</sequenceFlow>
|
||||
<sequenceFlow id="sid-798b2b60-d54a-4b78-8a2a-bbaa3be7ecc7" sourceRef="sid-1d4e06ca-4162-4149-902b-569779071f60" targetRef="sid-b8761461-ccc9-4b50-9b57-f2344eab3346" name="驳回">
|
||||
<conditionExpression xsi:type="tFormalExpression">${!pass}</conditionExpression>
|
||||
</sequenceFlow>
|
||||
<sequenceFlow id="sid-752481d2-cd8d-40db-a484-7bd8ac2f4fb0" sourceRef="sid-fefd80fb-f234-4fea-87e7-de958f25111a" targetRef="sid-b8761461-ccc9-4b50-9b57-f2344eab3346" name="驳回">
|
||||
<conditionExpression xsi:type="tFormalExpression">${!pass}</conditionExpression>
|
||||
</sequenceFlow>
|
||||
<sequenceFlow id="sid-8e51b2ce-691e-4fca-a617-682b17d51118" sourceRef="sid-c5ac1290-2bb7-437a-a7c0-8d69c023c7eb" targetRef="sid-b8761461-ccc9-4b50-9b57-f2344eab3346" name="驳回">
|
||||
<conditionExpression xsi:type="tFormalExpression">${!pass}</conditionExpression>
|
||||
</sequenceFlow>
|
||||
</process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_es-abolish">
|
||||
<bpmndi:BPMNPlane bpmnElement="enterprise_standard_abolish_publish" id="BPMNPlane_es-abolish">
|
||||
<bpmndi:BPMNShape id="shape-d048721b-8a55-4159-b08a-2316a91d3f56" bpmnElement="sid-8d441ae4-a274-41d7-8c7b-3b95b0402768">
|
||||
<omgdc:Bounds x="-475.0" y="-65.0" width="30.0" height="30.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="shape-cf8209fb-b09b-4658-b32d-c1258a66c168" bpmnElement="sid-b8761461-ccc9-4b50-9b57-f2344eab3346">
|
||||
<omgdc:Bounds x="-410.0" y="-90.0" width="100.0" height="80.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="edge-72902c33-52d9-4954-9fe5-272515c6ebc8" bpmnElement="sid-50f37ee8-0aff-4855-bca5-867898d442fb">
|
||||
<omgdi:waypoint x="-445.0" y="-50.0"/>
|
||||
<omgdi:waypoint x="-410.0" y="-50.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="shape-840583b1-86f0-4ee1-991b-6ac9d29e540b" bpmnElement="sid-291d8730-f124-496a-a3dc-275e517f2652">
|
||||
<omgdc:Bounds x="-290.0" y="-70.0" width="40.0" height="40.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="edge-9e04b75c-124b-442c-980e-e9ad253c8d86" bpmnElement="sid-5f7f3396-767c-454f-9be6-10297e2e681a">
|
||||
<omgdi:waypoint x="-310.0" y="-50.0"/>
|
||||
<omgdi:waypoint x="-290.0" y="-50.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="shape-ceb3d2e5-5849-4ed7-bc65-61b902ffe29f" bpmnElement="sid-33ce6ca2-b593-463f-87bb-9a875e356c45">
|
||||
<omgdc:Bounds x="-225.0" y="-90.0" width="100.0" height="80.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="edge-12ccc260-5470-4b3a-a645-808316ec6f01" bpmnElement="sid-148df960-06ef-4548-9b70-d4445aba3a1a">
|
||||
<omgdi:waypoint x="-250.0" y="-50.0"/>
|
||||
<omgdi:waypoint x="-225.0" y="-50.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="shape-50a2acde-242c-47bc-b341-45ff98906a65" bpmnElement="sid-8d8f31d1-f839-4a59-9acf-cec8ad734660">
|
||||
<omgdc:Bounds x="-95.0" y="-70.0" width="40.0" height="40.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="edge-05a8bb52-257e-436a-9d7a-317e32124a1d" bpmnElement="sid-4f957b28-312e-4e65-a37e-e9097fa8d1f4">
|
||||
<omgdi:waypoint x="-125.0" y="-50.0"/>
|
||||
<omgdi:waypoint x="-95.0" y="-50.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="shape-3ec593db-08a8-4cb5-afd3-f01940310b3e" bpmnElement="sid-516d0d52-f3bc-4388-b3d8-7a5ebdbd1e6a">
|
||||
<omgdc:Bounds x="-25.0" y="-90.0" width="100.0" height="80.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="edge-ba9aec74-fabe-46b1-875b-92e2b1931acd" bpmnElement="sid-16642411-596a-4b20-8cff-ee607ea5f25c">
|
||||
<omgdi:waypoint x="-55.0" y="-50.0"/>
|
||||
<omgdi:waypoint x="-25.0" y="-50.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="shape-4aedc092-7aa7-404a-a5f3-97893f92f8bd" bpmnElement="sid-013550bb-e799-47d1-83d0-f7c9ba70c5fe">
|
||||
<omgdc:Bounds x="115.0" y="-70.0" width="40.0" height="40.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="edge-677f376a-2373-4638-9b61-a6882bb5a5e9" bpmnElement="sid-a104fa64-65aa-48c1-a204-9edc47a2e310">
|
||||
<omgdi:waypoint x="75.0" y="-50.0"/>
|
||||
<omgdi:waypoint x="115.0" y="-50.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="edge-fa2317e6-91c1-46ee-b59d-65a2a5566d6a" bpmnElement="sid-40813dc1-c806-4e8c-a91f-fa16ac62b3fe">
|
||||
<omgdi:waypoint x="-75.0" y="-30.0"/>
|
||||
<omgdi:waypoint x="-75.0" y="35.0"/>
|
||||
<omgdi:waypoint x="-360.0" y="35.0"/>
|
||||
<omgdi:waypoint x="-360.0" y="-10.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="edge-8a5eec28-e114-4bcd-8724-e441754c864d" bpmnElement="sid-83244c37-5bb1-4db8-99fb-8f946c33c1d9">
|
||||
<omgdi:waypoint x="135.0" y="-30.0"/>
|
||||
<omgdi:waypoint x="135.0" y="35.0"/>
|
||||
<omgdi:waypoint x="-360.0" y="35.0"/>
|
||||
<omgdi:waypoint x="-360.0" y="-10.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="shape-4f8b4f09-40a8-4e55-90f6-d33f547af249" bpmnElement="sid-8bcb7238-381f-44de-a15e-9383a1ce87ff">
|
||||
<omgdc:Bounds x="185.0" y="-90.0" width="100.0" height="80.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="edge-ddc7e7d5-044e-4ce9-830e-b0921fc0cbda" bpmnElement="sid-056352d4-51aa-4085-a70d-5ec91e43fc66">
|
||||
<omgdi:waypoint x="155.0" y="-50.0"/>
|
||||
<omgdi:waypoint x="185.0" y="-50.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="shape-d7a76d6d-7fe6-43fe-9a6a-c09d545d4dc5" bpmnElement="sid-195839b5-9aba-4f88-bdee-e5df5ad2c2a4">
|
||||
<omgdc:Bounds x="310.0" y="-70.0" width="40.0" height="40.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="edge-12b62d3a-142a-49ca-9903-f8bc4df3b10f" bpmnElement="sid-b28430a5-602d-4c9d-b819-948ed23545cc">
|
||||
<omgdi:waypoint x="285.0" y="-50.0"/>
|
||||
<omgdi:waypoint x="310.0" y="-50.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="shape-79f0624f-8ab4-445e-945a-de7cafc5f313" bpmnElement="sid-f459d33d-12a8-4279-b25e-2d2d57b256f9">
|
||||
<omgdc:Bounds x="375.0" y="-90.0" width="100.0" height="80.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="edge-dfe05972-7070-4517-8fe5-69a0c496d792" bpmnElement="sid-cf57e667-8f81-4b49-9120-36c043b3d9e5">
|
||||
<omgdi:waypoint x="350.0" y="-50.0"/>
|
||||
<omgdi:waypoint x="375.0" y="-50.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="shape-f59ab901-9f2f-4dd1-8585-9809ee002f74" bpmnElement="sid-1d4e06ca-4162-4149-902b-569779071f60">
|
||||
<omgdc:Bounds x="500.0" y="-70.0" width="40.0" height="40.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="edge-35b0e701-7c6f-4713-9cd4-1b7610ada790" bpmnElement="sid-baf4a875-3935-4cdc-986d-5e00ca04ddd3">
|
||||
<omgdi:waypoint x="475.0" y="-50.0"/>
|
||||
<omgdi:waypoint x="500.0" y="-50.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="shape-371579fd-e389-4cc8-bffb-1cc3f09edb64" bpmnElement="sid-fc053c4d-804f-41c9-af47-cd77600cf6d1">
|
||||
<omgdc:Bounds x="565.0" y="-90.0" width="100.0" height="80.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="edge-8f7d80ae-4841-4d71-a9df-bc056536df8b" bpmnElement="sid-4bd9e242-081a-4b2b-a88c-7d85b003f057">
|
||||
<omgdi:waypoint x="540.0" y="-50.0"/>
|
||||
<omgdi:waypoint x="565.0" y="-50.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="shape-10cc8ec7-b8a3-454a-8449-833944e81136" bpmnElement="sid-fefd80fb-f234-4fea-87e7-de958f25111a">
|
||||
<omgdc:Bounds x="700.0" y="-70.0" width="40.0" height="40.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="edge-aaf9b4c5-0258-4d6c-a6c6-753e3504ba3c" bpmnElement="sid-94b6733c-43b0-4f04-9228-7b654b531a43">
|
||||
<omgdi:waypoint x="665.0" y="-50.0"/>
|
||||
<omgdi:waypoint x="700.0" y="-50.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="shape-8f6d3c34-5a10-44b6-8f95-36481a744d50" bpmnElement="sid-e569a71d-ffa4-4d1e-ae7e-0ea24cb6df8c">
|
||||
<omgdc:Bounds x="765.0" y="-90.0" width="100.0" height="80.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="edge-5989d9bc-33f3-409f-b0df-8c9bb826f3c0" bpmnElement="sid-9fea5c28-bd1d-4134-b7c2-13a19662ddcb">
|
||||
<omgdi:waypoint x="740.0" y="-50.0"/>
|
||||
<omgdi:waypoint x="765.0" y="-50.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="shape-36ea8220-5418-4faa-9210-4ab8999a804b" bpmnElement="sid-c5ac1290-2bb7-437a-a7c0-8d69c023c7eb">
|
||||
<omgdc:Bounds x="895.0" y="-70.0" width="40.0" height="40.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="edge-9773a344-d784-473c-8dc6-e4d3a1991d92" bpmnElement="sid-9ca041df-ee5e-44b8-b127-04f1fb2cb6f5">
|
||||
<omgdi:waypoint x="865.0" y="-50.0"/>
|
||||
<omgdi:waypoint x="895.0" y="-50.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="shape-cbe02d86-ae49-4508-bbe4-e163d81abbfd" bpmnElement="sid-80b49dd1-7efb-452f-a00b-bc15b978b4d7">
|
||||
<omgdc:Bounds x="970.0" y="-65.0" width="30.0" height="30.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="edge-7793527a-0dcb-4e1d-9cff-ed5be7df24d1" bpmnElement="sid-9c23b612-1e5b-4926-afda-7e85c507f791">
|
||||
<omgdi:waypoint x="935.0" y="-50.0"/>
|
||||
<omgdi:waypoint x="970.0" y="-50.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="edge-54827309-6778-47a0-a07c-2f05232b381b" bpmnElement="sid-a59cd2c2-e417-452c-a7fc-b3afa7c58757">
|
||||
<omgdi:waypoint x="330.0" y="-30.0"/>
|
||||
<omgdi:waypoint x="330.0" y="35.000004"/>
|
||||
<omgdi:waypoint x="-360.0" y="35.0"/>
|
||||
<omgdi:waypoint x="-360.0" y="-10.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="edge-cccfb85b-ece2-4fe2-bc84-4fcbc31d0e6d" bpmnElement="sid-798b2b60-d54a-4b78-8a2a-bbaa3be7ecc7">
|
||||
<omgdi:waypoint x="519.99994" y="-30.0"/>
|
||||
<omgdi:waypoint x="520.0" y="35.0"/>
|
||||
<omgdi:waypoint x="-359.99997" y="35.0"/>
|
||||
<omgdi:waypoint x="-360.0" y="-10.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="edge-05bdb793-1853-45f4-8f59-beedd4f23404" bpmnElement="sid-752481d2-cd8d-40db-a484-7bd8ac2f4fb0">
|
||||
<omgdi:waypoint x="719.99994" y="-30.0"/>
|
||||
<omgdi:waypoint x="720.00006" y="35.0"/>
|
||||
<omgdi:waypoint x="-360.00003" y="35.0"/>
|
||||
<omgdi:waypoint x="-360.0" y="-10.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="edge-cc7382b4-ef2c-4593-a20e-54b9204aeec4" bpmnElement="sid-8e51b2ce-691e-4fca-a617-682b17d51118">
|
||||
<omgdi:waypoint x="914.99994" y="-30.0"/>
|
||||
<omgdi:waypoint x="914.99994" y="34.999996"/>
|
||||
<omgdi:waypoint x="-360.00012" y="35.0"/>
|
||||
<omgdi:waypoint x="-360.0" y="-10.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</definitions>
|
||||
Reference in New Issue
Block a user