add 法规合规评估流程基础代码

This commit is contained in:
lijiarao
2024-01-16 18:06:49 +08:00
parent fd4919725f
commit 237965d2d1
12 changed files with 1714 additions and 164 deletions
@@ -16,6 +16,7 @@ public enum ProcessTypeEnum {
FB_STANDARD_CONSULTATION("标准征求意见流程",2, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbStandardConsultationServiceImpl"),
PROJECT_ASSESS("项目合规评估流程",3, "com.jero.modules.activiti.process.projectassess.service.ProcessProjectAssessService"),
PROJECT_NOT_MET("未符合项跟踪流程",4, "com.jero.modules.activiti.process.projectnotmet.service.ProcessProjectNotMetService"),
PROJECT_STANDARD("法规合规评估流程",5, "com.jero.modules.activiti.process.projectstandard.service.ProcessProjectStandardService"),
FB_STANDARD_PURCHASE("法规采购流程",6, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbStandardPurchaseServiceImpl"),
ES_INIT_CHANGE("企标立项/变更计划",7, "com.jero.modules.activiti.process.esInitChange.service.impl.ProcessEsInitChangeServiceImpl"),
ES_ANNUAL_REPORT("年度制修订计划审批流程(各部门主动上报)",8, "com.jero.modules.activiti.process.esAbolish.service.impl.ProcessEsAbolishServiceImpl"),
@@ -6,6 +6,7 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.entity.ProcessNode;
@@ -106,6 +107,12 @@ public class MyGlobalEventListener implements ActivitiEventListener {
delegateTask.removeVariable("pass");
//流程审批信息
ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class);
ProcessNodeService processNodeService = SpringContextUtil.getBean(ProcessNodeService.class);
log.info("id = " + delegateTask.getId());
log.info("name = " + delegateTask.getName());
log.info("taskEntity.getAssignee() = " + delegateTask.getAssignee());
log.info("taskEntity.getIdentityLinks() = " + delegateTask.getIdentityLinks());
log.info("taskEntity.getVariables() = " + delegateTask.getVariables());
String id = delegateTask.getId();
String name = delegateTask.getName();
@@ -113,6 +120,16 @@ public class MyGlobalEventListener implements ActivitiEventListener {
Date createTime = delegateTask.getCreateTime();
String assignee = delegateTask.getAssignee();
String taskDefinitionKey = delegateTask.getTaskDefinitionKey();
String processDefinitionId = delegateTask.getProcessDefinitionId();
//判断是否需要创建待办
LambdaQueryWrapper<ProcessNode> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessNode::getProcessDefinitionId,processDefinitionId);
wrapper.eq(ProcessNode::getNodeName,name);
wrapper.eq(ProcessNode::getIsView, YesOrNoEnum.YES.getValue());
int count = processNodeService.count(wrapper);
if (count == 0){
return;
}
//新增待审批记录
ProcessApprovalRecord approvalRecord = new ProcessApprovalRecord();
approvalRecord.setTaskId(id);
@@ -127,11 +144,7 @@ public class MyGlobalEventListener implements ActivitiEventListener {
approvalRecord.setCreateTime(date);
approvalRecord.setNodeId(taskDefinitionKey);
recordService.save(approvalRecord);
log.info("id = " + delegateTask.getId());
log.info("name = " + delegateTask.getName());
log.info("taskEntity.getAssignee() = " + delegateTask.getAssignee());
log.info("taskEntity.getIdentityLinks() = " + delegateTask.getIdentityLinks());
log.info("taskEntity.getVariables() = " + delegateTask.getVariables());
}
private void taskAssigned(ActivitiEvent event) {
@@ -150,6 +163,14 @@ public class MyGlobalEventListener implements ActivitiEventListener {
ActivitiEntityEventImpl activitiEntityEvent = (ActivitiEntityEventImpl) event;
TaskEntity delegateTask = (TaskEntity) activitiEntityEvent.getEntity();
ExecutionEntity execution = delegateTask.getExecution();
log.info("流程实例总数:" + execution.getVariable("nrOfInstances"));
log.info("当前活动的流程实例总数:" + execution.getVariable("nrOfActiveInstances"));
log.info("已经完成实例的数目:" + execution.getVariable("nrOfCompletedInstances"));
log.info("id = " + delegateTask.getId());
log.info("name = " + delegateTask.getName());
log.info("taskEntity.getAssignee() = " + delegateTask.getAssignee());
log.info("taskEntity.getIdentityLinks() = " + delegateTask.getIdentityLinks());
log.info("taskEntity.getVariables() = " + delegateTask.getVariables());
//流程审批信息转办
ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class);
String taskId = delegateTask.getId();
@@ -158,8 +179,10 @@ public class MyGlobalEventListener implements ActivitiEventListener {
//更新审批信息为完成
LambdaQueryWrapper<ProcessApprovalRecord> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessApprovalRecord::getTaskId,taskId);
wrapper.eq(ProcessApprovalRecord::getUserId,assignee);
ProcessApprovalRecord approvalRecord = recordService.getOne(wrapper);
if (approvalRecord == null){
return;
}
Date createTime = approvalRecord.getCreateTime();
DateTime date = DateUtil.date();
// 如果date小于createTime+一秒,说明是在同一秒内完成的,需要加一秒,解决流程审批信息发起节点和下一节点创建时间一致,排序错乱问题
@@ -190,14 +213,7 @@ public class MyGlobalEventListener implements ActivitiEventListener {
}
recordService.updateById(approvalRecord);
log.info("流程实例总数:" + execution.getVariable("nrOfInstances"));
log.info("当前活动的流程实例总数:" + execution.getVariable("nrOfActiveInstances"));
log.info("已经完成实例的数目:" + execution.getVariable("nrOfCompletedInstances"));
log.info("id = " + delegateTask.getId());
log.info("name = " + delegateTask.getName());
log.info("taskEntity.getAssignee() = " + delegateTask.getAssignee());
log.info("taskEntity.getIdentityLinks() = " + delegateTask.getIdentityLinks());
log.info("taskEntity.getVariables() = " + variables);
}
private void activityComplete(ActivitiEvent event) {
@@ -20,5 +20,7 @@ public class ProcessDefinitionKey {
public static final String PROJECT_ASSESS = "project-assessment";
//项目合规评估流程
public static final String PROJECT_NOT_MET = "project-not-met";
//项目合规评估流程
public static final String PROJECT_STANDARD = "standard-assessment";
}
@@ -6,4 +6,33 @@ package com.jero.modules.activiti.process.projectstandard.common;
*/
public class ProcessProjectStandardCommon {
public static final String STANDARDS_ENGINEER = "standardsEngineer";
public static final String MANAGER_LEADER_LIST = "managerLeaderList";
public static final String MODULE_OWNER_LIST = "moduleOwnerList";
public static final String MODULE_OWNER_LIST_SIZE = "moduleOwnerListSize";
public static final String DESIGN_ENGINEER_LIST = "designEngineerList";
public static final String DESIGN_ENGINEER_LIST_SIZE = "designEngineerListSize";
//法规工程师发起
public static final String FGGCSFQ = "fggcsfq";
//部所主管级领导下发
public static final String BSZGJLDXF = "bszgjldxf";
//模块负责人分发
public static final String MKFZRFF_1 = "mkfzrff_1";
public static final String MKFZRFF_2 = "mkfzrff_2";
public static final String MKFZRFF_3 = "mkfzrff_3";
public static final String MKFZRFF_4 = "mkfzrff_4";
public static final String MKFZRFF_5 = "mkfzrff_5";
//设计工程师评估
public static final String SJGCSPG_ = "sjgcspg_";
//模块负责人审批
public static final String MKFZRSP_ = "mkfzrsp_";
//部所主管级领导审批
public static final String BSZGJLDSP_ = "bszgjldsp_";
//法规工程师审批
public static final String FGGCSSP = "fggcssp";
//设计工程师补充工作令编号
public static final String SJGCSBCGZLBH = "sjgcsbcgzlbh";
}
@@ -81,6 +81,13 @@ public class ProcessProjectStandard {
@ApiModelProperty(value = "来源(1-国内、2-海外)")
private String source;
/**
* 标准id
*/
@TableField(value = "standard_id")
@ApiModelProperty(value = "标准id")
private String standardId;
/**
* 标准编号
*/
@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
/**
*
@@ -105,6 +107,14 @@ public class ProcessProjectStandardTerm {
@ApiModelProperty(value="条款内容")
private String termText;
/**
* 实施日期
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "实施日期")
private Date implementationDate;
/**
* 拆分单id
*/
@@ -132,4 +142,50 @@ public class ProcessProjectStandardTerm {
@TableField(value = "carbon_copy_personnels")
@ApiModelProperty(value="抄送人员")
private String carbonCopyPersonnels;
/**
* 车型系列
*/
@TableField(exist = false)
@ApiModelProperty(value="车型系列")
private String modelSeries;
/**
* 车型系列
*/
@TableField(exist = false)
@ApiModelProperty(value="车型系列")
private String modelSeries_dict;
/**
* 依据描述
*/
@TableField(exist = false)
@ApiModelProperty(value="依据描述")
private String description;
/**
* 佐证材料
*/
@TableField(exist = false)
@ApiModelProperty(value="佐证材料")
private String fileId;
@TableField(exist = false)
@ApiModelProperty(value="模块负责人")
private String moduleOwner;
@TableField(exist = false)
@ApiModelProperty(value="责任单位联络人")
private String responsibleUnitLeader;
@TableField(exist = false)
@ApiModelProperty(value="")
private String termUserId;
@TableField(exist = false)
@ApiModelProperty(value="评估结果")
private String assessResults;
}
@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
*
@@ -105,6 +107,12 @@ public class ProcessProjectStandardTermUser {
@ApiModelProperty(value="模块负责人id")
private String moduleOwner;
/**评估结果(1-符合、2-不符合)*/
@TableField(value = "assess_results")
@Dict(dicCode = "standards_assess_results")
@ApiModelProperty(value = "评估结果(1-符合、2-不符合)")
private String assessResults;
/**
* 不涉及原因
*/
@@ -2,6 +2,9 @@ package com.jero.modules.activiti.process.projectstandard.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTerm;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
@@ -9,4 +12,11 @@ import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectSt
*@date 2024-01-15 16:27
*/
public interface ProcessProjectStandardTermMapper extends BaseMapper<ProcessProjectStandardTerm> {
List<ProcessProjectStandardTerm> getByResponsibleUnitLeader(@Param("processId") String processId, @Param("originUserId") String originUserId, @Param("hasModuleOwner") Boolean hasModuleOwner);
List<ProcessProjectStandardTerm> getByModuleOwner(@Param("processId") String processId, @Param("originUserId") String originUserId, @Param("executionParentId") String executionParentId, @Param("hasDesignEngineer") Boolean hasDesignEngineer);
List<ProcessProjectStandardTerm> getByDesignEngineer(@Param("processId") String processId, @Param("originUserId") String originUserId, @Param("executionParentId") String executionParentId);
List<ProcessProjectStandardTerm> getByStandardsEngineer(@Param("processId") String processId);
}
@@ -16,15 +16,106 @@
<result column="term_number" jdbcType="VARCHAR" property="termNumber" />
<result column="term_name" jdbcType="VARCHAR" property="termName" />
<result column="term_text" jdbcType="LONGVARCHAR" property="termText" />
<result column="implementation_date" jdbcType="VARCHAR" property="implementationDate" />
<result column="split_info_id" jdbcType="VARCHAR" property="splitInfoId" />
<result column="project_approval_flag" jdbcType="TINYINT" property="projectApprovalFlag" />
<result column="design_engineer" jdbcType="VARCHAR" property="designEngineer" />
<result column="carbon_copy_personnels" jdbcType="VARCHAR" property="carbonCopyPersonnels" />
<result column="description" property="description"/>
<result column="file_id" property="fileId"/>
<result column="module_owner" property="moduleOwner"/>
<result column="not_involved" property="notInvolved"/>
<result column="responsible_unit_leader" property="responsibleUnitLeader"/>
<result column="term_user_id" property="termUserId"/>
<result column="assess_results" property="assessResults"/>
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, create_by, create_time, update_by, update_time, org_code, del_flag, process_id,
standard_id, term_number, term_name, term_text, split_info_id, project_approval_flag,
design_engineer, carbon_copy_personnels
${alias}.id, ${alias}.create_by, ${alias}.create_time, ${alias}.update_by, ${alias}.update_time, ${alias}.org_code, ${alias}.del_flag, ${alias}.process_id, ${alias}.
standard_id, ${alias}.term_number, ${alias}.term_name, ${alias}.term_text, ${alias}.implementation_date, ${alias}.split_info_id, ${alias}.project_approval_flag, ${alias}.
design_engineer, ${alias}.carbon_copy_personnels
</sql>
<select id="getByResponsibleUnitLeader" resultMap="BaseResultMap">
select
<include refid="Base_Column_List">
<property name="alias" value="ppat"/>
</include>
,
ppstu.id term_user_id,
ppstu.not_involved,
ppstu.assess_results,
ppstu.description,
ppstu.file_id,
ppstu.design_engineer
from process_project_standard_term ppst
left join process_project_standard_term_user ppstu on ppst.id = ppstu.term_id
where ppst.process_id = #{processId}
and ppstu.responsible_unit_leader = #{originUserId}
<if test="hasModuleOwner">
and ppstu.module_owner is not null
</if>
and ppstu.id is not null
</select>
<select id="getByModuleOwner" resultMap="BaseResultMap">
select
<include refid="Base_Column_List">
<property name="alias" value="ppat"/>
</include>
,
ppstu.id term_user_id,
ppstu.not_involved,
ppstu.assess_results,
ppstu.description,
ppstu.file_id,
ppstu.design_engineer
from process_project_standard_term ppst
left join process_project_standard_term_user ppstu on ppst.id = ppstu.term_id
where ppst.process_id = #{processId}
and ppstu.module_owner = #{originUserId}
and ppstu.parent_execution_id = #{executionParentId}
<if test="hasDesignEngineer">
and ppstu.design_engineer is not null
</if>
and ppstu.id is not null
</select>
<select id="getByDesignEngineer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List">
<property name="alias" value="ppat"/>
</include>
,
ppstu.id term_user_id,
ppstu.not_involved,
ppstu.assess_results,
ppstu.description,
ppstu.file_id,
ppstu.design_engineer
from process_project_standard_term ppst
left join process_project_standard_term_user ppstu on ppst.id = ppstu.term_id
where ppst.process_id = #{processId}
and ppstu.design_engineer = #{originUserId}
and ppstu.parent_execution_id = #{executionParentId}
and ppstu.id is not null
</select>
<select id="getByStandardsEngineer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List">
<property name="alias" value="ppat"/>
</include>
,
ppstu.id term_user_id,
ppstu.not_involved,
ppstu.assess_results,
ppstu.description,
ppstu.file_id,
ppstu.design_engineer
from process_project_standard_term ppst
left join process_project_standard_term_user ppstu on ppst.id = ppstu.term_id
where ppst.process_id = #{processId}
and ppstu.id is not null
</select>
</mapper>
@@ -1,30 +1,62 @@
package com.jero.modules.activiti.process.projectstandard.service;
import cn.hutool.core.collection.CollStreamUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.api.vo.SendMessageAPI;
import com.jero.common.constant.CommonConstant;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.DictModel;
import com.jero.common.system.vo.LoginUser;
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.common.common.DraftCommon;
import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey;
import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO;
import com.jero.modules.activiti.process.fb.dto.ProcessDTO;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.process.projectassess.common.ProcessProjectAssessCommon;
import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssessLink;
import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssessTerm;
import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssessTermUser;
import com.jero.modules.activiti.process.projectstandard.common.ProcessProjectStandardCommon;
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTerm;
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTermUser;
import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectStandardTermMapper;
import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectStandardTermUserMapper;
import com.jero.modules.activiti.process.projectstandard.vo.ProcessProjectStandardVO;
import com.jero.modules.activiti.process.projectstandard.vo.StandardSelectionVO;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.laws.common.mapper.LawsCommonMapper;
import com.jero.modules.laws.common.service.ILawsCommonService;
import com.jero.modules.laws.common.util.CurrentUserUtil;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
import com.jero.modules.laws.standard.entity.LawsDomesticStandard;
import com.jero.modules.laws.standard.entity.LawsOverseasStandard;
import com.jero.modules.laws.standard.service.ILawsDomesticStandardService;
import com.jero.modules.laws.standard.service.ILawsOverseasStandardService;
import com.jero.modules.projectLibrary.vo.DecompositionOrderSourceVO;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import org.activiti.engine.TaskService;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandard;
import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectStandardMapper;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
*
@@ -33,26 +65,246 @@ import java.util.Map;
*/
@Service
public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectStandardMapper, ProcessProjectStandard> {
@Resource
private ILawsCommonService lawsCommonService;
@Resource
private LawsCommonMapper lawsCommonMapper;
@Resource
private ISarFileSplitInfoService sarFileSplitInfoService;
@Resource
private ProcessAllService processAllService;
@Resource
private ISysBaseAPI sysBaseAPI;
@Resource
private TaskService taskService;
@Resource
private IProcessHandleService processHandleService;
@Resource
private SendMessageAPI sendMessageAPI;
//国内标准
@Autowired
private ILawsDomesticStandardService lawsDomesticStandardService;
//海外标准
@Autowired
private ILawsOverseasStandardService lawsOverseasStandardService;
@Resource
private ProcessProjectStandardTermMapper termMapper;
@Resource
private ProcessProjectStandardTermService termService;
@Resource
private ProcessProjectStandardTermUserMapper termUserMapper;
@Resource
private ProcessProjectStandardTermUserService termUserService;
public ProcessInfoVO<ProcessProjectStandardVO> queryProcessInfoVO(String draftId, String processInstanceId, String taskId) {
return null;
if (StringUtils.isNotBlank(draftId) && StringUtils.isBlank(taskId)) {
ProcessInfoVO draft = processHandleService.getDraftByDraftId(draftId);
return draft;
}
ProcessInfoVO draft = processHandleService.getDraftByTaskId(taskId);
if (draft != null){
return draft;
}
ProcessInfoVO processInfoVO = processHandleService.queryProcessInfoVO(draftId, processInstanceId, taskId);
String processId = processInfoVO.getBusinessId();
ProcessDTO processDTO = processHandleService.getProcessDTO(taskId);
ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord();
String originUserId = processApprovalRecord.getOriginUserId();
Task task = processDTO.getTask();
String executionParentId = task.getFormKey();
String taskDefinitionKey = task.getTaskDefinitionKey();
if (taskDefinitionKey.contains("_") && !taskDefinitionKey.contains("mkfzrff_")){
taskDefinitionKey = taskDefinitionKey.substring(0,taskDefinitionKey.length()-1);
}
List<ProcessProjectStandardTermUser> processProjectStandardTermUserList = new ArrayList<>();
List<ProcessProjectStandardTerm> processProjectStandardTermList = new ArrayList<>();
//获取所有用户信息
List<LoginUser> userList = sysBaseAPI.getAllUser();
Map<String, String> userNameMap = new HashMap<>();
for (LoginUser loginUser : userList) {
userNameMap.put(loginUser.getId(), loginUser.calcNameWorkNo());
}
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
String createUserId = processAll.getCreateUserId();
//发起人
String createUserName = userNameMap.get(createUserId);
LambdaQueryWrapper<ProcessProjectStandardTermUser> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessProjectStandardTermUser::getProcessId, processId);
List<ProcessProjectStandardTermUser> list = new ArrayList<>();
switch (taskDefinitionKey) {
//部所主管级领导下发
case ProcessProjectStandardCommon.BSZGJLDXF:
processProjectStandardTermList = termMapper.getByResponsibleUnitLeader(processId, originUserId, false);
break;
//部所主管级领导审批
case ProcessProjectStandardCommon.BSZGJLDSP_:
processProjectStandardTermList = termMapper.getByResponsibleUnitLeader(processId, originUserId, true);
wrapper.eq(ProcessProjectStandardTermUser::getResponsibleUnitLeader, originUserId);
break;
//模块负责人分发
case ProcessProjectStandardCommon.MKFZRFF_1:
processProjectStandardTermList = termMapper.getByModuleOwner(processId, originUserId, executionParentId, false);
break;
//驳回后模块负责人分发
case ProcessProjectStandardCommon.MKFZRFF_4:
case ProcessProjectStandardCommon.MKFZRFF_5:
processProjectStandardTermList = termMapper.getByModuleOwner(processId, originUserId, executionParentId, true);
break;
//模块负责人审批
case ProcessProjectStandardCommon.MKFZRSP_:
processProjectStandardTermList = termMapper.getByModuleOwner(processId, originUserId, executionParentId, false);
wrapper.eq(ProcessProjectStandardTermUser::getModuleOwner, originUserId);
wrapper.eq(ProcessProjectStandardTermUser::getParentExecutionId, executionParentId);
list = termUserService.list(wrapper);
break;
//设计工程师评估
case ProcessProjectStandardCommon.SJGCSPG_:
processProjectStandardTermList = termMapper.getByDesignEngineer(processId, originUserId, executionParentId);
wrapper.eq(ProcessProjectStandardTermUser::getDesignEngineer, originUserId);
wrapper.eq(ProcessProjectStandardTermUser::getParentExecutionId, executionParentId);
list = termUserService.list(wrapper);
break;
//法规工程师审批
case ProcessProjectStandardCommon.FGGCSSP:
processProjectStandardTermList = termMapper.getByStandardsEngineer(processId);
break;
//设计工程师补充工作令编号
case ProcessProjectStandardCommon.SJGCSBCGZLBH:
processProjectStandardTermList = termMapper.getByStandardsEngineer(processId);
break;
default:
}
List<DictModel> dictModels = sysBaseAPI.queryDictItemsByCode("assess_results");
Map<String, String> dictevaluationFeedbackMap = CollStreamUtil.toMap(dictModels, DictModel::getValue, DictModel::getText);
//给条款中保存关联的信息
Map<String, List<ProcessProjectStandardTermUser>> termIdListMap = CollStreamUtil.groupByKey(list, ProcessProjectStandardTermUser::getTermId);
for (ProcessProjectStandardTerm term : processProjectStandardTermList) {
String termId = term.getId();
List<ProcessProjectStandardTermUser> termUsers = termIdListMap.get(termId);
if (CollectionUtil.isNotEmpty(termUsers)){
ProcessProjectStandardTermUser termUser = termUsers.get(0);
term.setDescription(termUser.getDescription());
term.setFileId(termUser.getFileId());
}
}
//拼接分类法规标题
List<DictModel> decompositionOrderSourceDictModels = sysBaseAPI.queryDictItemsByCode("decomposition_order_source");
Map<String, String> decompositionOrderSourceMap = CollStreamUtil.toMap(decompositionOrderSourceDictModels, DictModel::getValue, DictModel::getText);
Map<String, ProcessProjectStandardTerm> splitInfoIdMap = this.getSplitInfoIdMap(processId);
List<ProcessProjectStandardTerm> allProjectAssesTermList = new ArrayList<>();
List<String> usedSplitInfoId = new ArrayList<>();
for (ProcessProjectStandardTerm term : processProjectStandardTermList) {
String splitInfoId = term.getSplitInfoId();
if (!usedSplitInfoId.contains(splitInfoId) && splitInfoIdMap.containsKey(splitInfoId)) {
usedSplitInfoId.add(splitInfoId);
ProcessProjectStandardTerm titleTerm = splitInfoIdMap.get(splitInfoId);
ProcessProjectStandardTerm term1 = new ProcessProjectStandardTerm();
term1.setTermName(titleTerm.getTermName());
term1.setTermNumber(titleTerm.getTermNumber());
term1.setTermText(decompositionOrderSourceMap.get(titleTerm.getTermText()));
allProjectAssesTermList.add(term1);
}
allProjectAssesTermList.add(term);
}
ProcessProjectStandard processProjectStandard = this.getById(processId);
ProcessProjectStandardVO processProjectStandardVO = new ProcessProjectStandardVO();
processProjectStandardVO.setProcessProjectStandard(processProjectStandard);
processProjectStandardVO.setProcessProjectStandardTermList(processProjectStandardTermList);
//processProjectStandardVO.setProcessProjectStandardTermUserList();
processInfoVO.setBusinessInfoDTO(processProjectStandardVO);
return processInfoVO;
}
public void saveToDraft(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) {
// 流程信息
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
basicProcessInfoDTO.setProcessType(ProcessTypeEnum.PROJECT_STANDARD.getValue()); // 流程类型
//保存businessId
String processInstanceId = basicProcessInfoDTO.getProcessInstanceId();
if (StringUtils.isNotBlank(processInstanceId)){
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
String projectId = processAll.getProjectId();
processInfoVO.setBusinessId(projectId);
}
processHandleService.saveToDraft(processInfoVO);
}
public void startProcess(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) {
//start 先保存一份初始草稿
processInfoVO.setSaveSource(DraftCommon.INITIAL_SOURCE);
saveToDraft(processInfoVO);
//end 保存初始草稿结束
ProcessProjectStandardVO businessInfoDTO = processInfoVO.getBusinessInfoDTO();
ProcessProjectStandard processProjectStandard = businessInfoDTO.getProcessProjectStandard();
this.save(processProjectStandard);
String processId = processProjectStandard.getId();
processInfoVO.setBusinessId(processId);
String standardId = processProjectStandard.getStandardId();
String source = processProjectStandard.getSource();
Date implementationDate;
if (CommonConstant.STANDARD_SOURCE_1.equals(source)) {
LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getById(standardId);
implementationDate = lawsDomesticStandard.getImplementationDate();
}else {
LawsOverseasStandard overseasStandard = lawsOverseasStandardService.getById(standardId);
implementationDate = overseasStandard.getImplementationDate();
}
//保存条款
List<ProcessProjectStandardTerm> processProjectStandardTermList = businessInfoDTO.getProcessProjectStandardTermList();
for (ProcessProjectStandardTerm term : processProjectStandardTermList) {
term.setProcessId(processId);
term.setImplementationDate(implementationDate);
}
termService.saveBatch(processProjectStandardTermList);
// 保存关联关系
List<String> allResponsibleUnitLeaderList = new ArrayList<>();
List<ProcessProjectStandardTermUser> termUserList = new ArrayList<>();
for (ProcessProjectStandardTerm term : processProjectStandardTermList) {
String termId = term.getId();
String responsibleUnitLeaders = term.getResponsibleUnitLeader();
if (StringUtils.isBlank(responsibleUnitLeaders)) {
throw new JeroBootException(ResultCommon.PARAMETER_NOT_RECOGNIZED);
}
List<String> responsibleUnitLeaderList = Arrays.asList(responsibleUnitLeaders.split(","));
List<String> distinctResponsibleUnitLeader = responsibleUnitLeaderList.stream()
.filter(Objects::nonNull)
.distinct().collect(Collectors.toList());
for (String responsibleUnitLeaderId : distinctResponsibleUnitLeader) {
ProcessProjectStandardTermUser termUser = new ProcessProjectStandardTermUser();
termUser.setProcessId(processId);
termUser.setTermId(termId);
termUser.setResponsibleUnitLeader(responsibleUnitLeaderId);
termUserList.add(termUser);
}
allResponsibleUnitLeaderList.addAll(distinctResponsibleUnitLeader);
}
termUserService.saveBatch(termUserList);
List<String> distinctAllResponsibleUnitLeaderList = allResponsibleUnitLeaderList.stream()
.filter(Objects::nonNull)
.distinct().collect(Collectors.toList());
String distinctAllResponsibleUnitLeaderListJoin = CollectionUtil.join(distinctAllResponsibleUnitLeaderList, ",");
//启动
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
basicProcessInfoDTO.setProcessDefinitionId(processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.PROJECT_STANDARD)); // 流程定义id
basicProcessInfoDTO.setProcessType(ProcessTypeEnum.PROJECT_STANDARD.getValue()); // 流程类型
Map<String, Object> userInfoMap = new HashMap<>();
userInfoMap.put(ProcessProjectStandardCommon.STANDARDS_ENGINEER, CurrentUserUtil.getId());
userInfoMap.put(ProcessProjectStandardCommon.MANAGER_LEADER_LIST, distinctAllResponsibleUnitLeaderListJoin);
processInfoVO.setUserInfoMap(userInfoMap);
processHandleService.startProcess(processInfoVO);
}
public void approveTask(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO, boolean b) {
@@ -103,4 +355,15 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
public void autoComplete(DelegateTask delegateTask) {
}
/**
* 获取分类用的标准编号,标准名称列表
*/
public Map<String, ProcessProjectStandardTerm> getSplitInfoIdMap(String processId) {
LambdaQueryWrapper<ProcessProjectStandardTerm> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessProjectStandardTerm::getProcessId,processId);
List<ProcessProjectStandardTerm> list = termService.list(wrapper);
Map<String, ProcessProjectStandardTerm> stringProcessProjectStandardTermMap = CollStreamUtil.toIdentityMap(list, ProcessProjectStandardTerm::getSplitInfoId);
return stringProcessProjectStandardTermMap;
}
}
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_0zmm786" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.13.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.19.0">
<bpmn:process id="regulations-assessment" name="法规合规评估流程" isExecutable="true">
<bpmn:definitions xmlns:bpmn="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:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="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/test">
<bpmn:process id="standard-assessment" name="法规合规评估流程" isExecutable="true">
<bpmn:startEvent id="StartEvent_1">
<bpmn:outgoing>Flow_12b9yhd</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="Flow_12b9yhd" sourceRef="StartEvent_1" targetRef="fggcsfq" />
<bpmn:userTask id="fggcsfq" name="法规工程师发起" camunda:assignee="${standardsEngineer}">
<bpmn:userTask id="fggcsfq" name="法规工程师发起" activiti:assignee="${standardsEngineer}">
<bpmn:incoming>Flow_12b9yhd</bpmn:incoming>
<bpmn:outgoing>Flow_0tgn37q</bpmn:outgoing>
</bpmn:userTask>
@@ -13,14 +13,14 @@
<bpmn:subProcess id="Activity_1wp96uu" name="部所主管级领导分发子流程">
<bpmn:incoming>Flow_0tgn37q</bpmn:incoming>
<bpmn:outgoing>Flow_0w3nr57</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics camunda:collection="managerLeaderList" camunda:elementVariable="managerLeader">
<bpmn:multiInstanceLoopCharacteristics activiti:collection="managerLeaderList" activiti:elementVariable="managerLeader">
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>
</bpmn:multiInstanceLoopCharacteristics>
<bpmn:startEvent id="Event_1azjojy">
<bpmn:outgoing>Flow_1g6zc95</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="Flow_1g6zc95" sourceRef="Event_1azjojy" targetRef="bszgjldxf" />
<bpmn:userTask id="bszgjldxf" name="部所主管级领导下发" camunda:assignee="${managerLeader}">
<bpmn:userTask id="bszgjldxf" name="部所主管级领导下发" activiti:assignee="${managerLeader}">
<bpmn:incoming>Flow_1g6zc95</bpmn:incoming>
<bpmn:outgoing>Flow_06h9ihd</bpmn:outgoing>
</bpmn:userTask>
@@ -28,27 +28,27 @@
<bpmn:extensionElements />
<bpmn:incoming>Flow_06h9ihd</bpmn:incoming>
<bpmn:outgoing>Flow_0ni7hxc</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics camunda:collection="moduleOwnerList" camunda:elementVariable="moduleOwner">
<bpmn:multiInstanceLoopCharacteristics activiti:collection="moduleOwnerList" activiti:elementVariable="moduleOwner">
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>
</bpmn:multiInstanceLoopCharacteristics>
<bpmn:startEvent id="Event_1ian0ub">
<bpmn:outgoing>Flow_0xb4gtd</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="Flow_0xb4gtd" sourceRef="Event_1ian0ub" targetRef="mkfzrff" />
<bpmn:userTask id="sjgcspg" name="设计工程师评估" camunda:assignee="${designEngineer}">
<bpmn:sequenceFlow id="Flow_0xb4gtd" sourceRef="Event_1ian0ub" targetRef="mkfzrff_1" />
<bpmn:userTask id="sjgcspg_1" name="设计工程师评估" activiti:assignee="${designEngineer}">
<bpmn:extensionElements>
<camunda:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
<activiti:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_07hxwn8</bpmn:incoming>
<bpmn:incoming>Flow_0a6biwg</bpmn:incoming>
<bpmn:outgoing>Flow_197effc</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics camunda:collection="designEngineerList" camunda:elementVariable="designEngineer">
<bpmn:multiInstanceLoopCharacteristics activiti:collection="designEngineerList" activiti:elementVariable="designEngineer">
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>
</bpmn:multiInstanceLoopCharacteristics>
</bpmn:userTask>
<bpmn:userTask id="mkfzrsp" name="模块负责人审批" camunda:assignee="${moduleOwner}">
<bpmn:userTask id="mkfzrsp_1" name="模块负责人审批" activiti:assignee="${moduleOwner}">
<bpmn:extensionElements>
<camunda:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
<activiti:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_197effc</bpmn:incoming>
<bpmn:outgoing>Flow_1w5wrt4</bpmn:outgoing>
@@ -58,27 +58,27 @@
<bpmn:outgoing>Flow_1m6dxws</bpmn:outgoing>
<bpmn:outgoing>Flow_07hxwn8</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_1w5wrt4" sourceRef="mkfzrsp" targetRef="Gateway_1vkxod2" />
<bpmn:sequenceFlow id="Flow_1w5wrt4" sourceRef="mkfzrsp_1" targetRef="Gateway_1vkxod2" />
<bpmn:endEvent id="Event_151o5cu">
<bpmn:incoming>Flow_1m6dxws</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_1m6dxws" name="通过" sourceRef="Gateway_1vkxod2" targetRef="Event_151o5cu">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_07hxwn8" name="驳回" sourceRef="Gateway_1vkxod2" targetRef="sjgcspg">
<bpmn:sequenceFlow id="Flow_07hxwn8" name="驳回" sourceRef="Gateway_1vkxod2" targetRef="sjgcspg_1">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:userTask id="mkfzrff" name="模块负责人分发" camunda:assignee="${moduleOwner}">
<bpmn:userTask id="mkfzrff_1" name="模块负责人分发" activiti:assignee="${moduleOwner}">
<bpmn:extensionElements>
<camunda:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
<activiti:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_0xb4gtd</bpmn:incoming>
<bpmn:outgoing>Flow_0a6biwg</bpmn:outgoing>
</bpmn:userTask>
<bpmn:sequenceFlow id="Flow_0a6biwg" sourceRef="mkfzrff" targetRef="sjgcspg" />
<bpmn:sequenceFlow id="Flow_197effc" sourceRef="sjgcspg" targetRef="mkfzrsp" />
<bpmn:sequenceFlow id="Flow_0a6biwg" sourceRef="mkfzrff_1" targetRef="sjgcspg_1" />
<bpmn:sequenceFlow id="Flow_197effc" sourceRef="sjgcspg_1" targetRef="mkfzrsp_1" />
</bpmn:subProcess>
<bpmn:userTask id="bszgjldsp" name="部所主管级领导审批" camunda:assignee="${managerLeader}">
<bpmn:userTask id="bszgjldsp_1" name="部所主管级领导审批" activiti:assignee="${managerLeader}">
<bpmn:incoming>Flow_0ff821d</bpmn:incoming>
<bpmn:incoming>Flow_0ni7hxc</bpmn:incoming>
<bpmn:outgoing>Flow_10o9sl2</bpmn:outgoing>
@@ -88,7 +88,7 @@
<bpmn:outgoing>Flow_11i64js</bpmn:outgoing>
<bpmn:outgoing>Flow_132fp4x</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_10o9sl2" sourceRef="bszgjldsp" targetRef="Gateway_1qktq5f" />
<bpmn:sequenceFlow id="Flow_10o9sl2" sourceRef="bszgjldsp_1" targetRef="Gateway_1qktq5f" />
<bpmn:sequenceFlow id="Flow_11i64js" name="驳回" sourceRef="Gateway_1qktq5f" targetRef="Activity_072gbnv">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
@@ -101,31 +101,27 @@
<bpmn:subProcess id="Activity_072gbnv" name="模块负责人驳回子流程">
<bpmn:incoming>Flow_11i64js</bpmn:incoming>
<bpmn:outgoing>Flow_0ff821d</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics camunda:collection="moduleOwnerList" camunda:elementVariable="moduleOwner">
<bpmn:multiInstanceLoopCharacteristics activiti:collection="moduleOwnerList" activiti:elementVariable="moduleOwner">
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>
</bpmn:multiInstanceLoopCharacteristics>
<bpmn:startEvent id="Event_1awayw1">
<bpmn:outgoing>Flow_18i416j</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="Flow_18i416j" sourceRef="Event_1awayw1" targetRef="mkfzrzdbh" />
<bpmn:userTask id="mkfzrzdbh" name="模块负责人自动驳回">
<bpmn:incoming>Flow_18i416j</bpmn:incoming>
<bpmn:outgoing>Flow_1q5kwu9</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="sjgcspg2" name="设计工程师评估" camunda:assignee="${designEngineer}">
<bpmn:sequenceFlow id="Flow_18i416j" sourceRef="Event_1awayw1" targetRef="mkfzrff_2" />
<bpmn:userTask id="sjgcspg_2" name="设计工程师评估" activiti:assignee="${designEngineer}">
<bpmn:extensionElements>
<camunda:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
<activiti:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_1al6zeq</bpmn:incoming>
<bpmn:incoming>Flow_1q5kwu9</bpmn:incoming>
<bpmn:incoming>Flow_1m13a5m</bpmn:incoming>
<bpmn:outgoing>Flow_11c0pso</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics camunda:collection="designEngineerList" camunda:elementVariable="designEngineer">
<bpmn:multiInstanceLoopCharacteristics activiti:collection="designEngineerList" activiti:elementVariable="designEngineer">
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>
</bpmn:multiInstanceLoopCharacteristics>
</bpmn:userTask>
<bpmn:userTask id="mkfzrsp2" name="模块负责人审批" camunda:assignee="${moduleOwner}">
<bpmn:userTask id="mkfzrsp_2" name="模块负责人审批" activiti:assignee="${moduleOwner}">
<bpmn:extensionElements>
<camunda:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
<activiti:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_11c0pso</bpmn:incoming>
<bpmn:outgoing>Flow_0gzlhk1</bpmn:outgoing>
@@ -138,19 +134,27 @@
<bpmn:endEvent id="Event_0662euh">
<bpmn:incoming>Flow_1tfvdpt</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_1al6zeq" name="驳回" sourceRef="Gateway_0e1m7wn" targetRef="sjgcspg2">
<bpmn:sequenceFlow id="Flow_1al6zeq" name="驳回" sourceRef="Gateway_0e1m7wn" targetRef="sjgcspg_2">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_11c0pso" sourceRef="sjgcspg2" targetRef="mkfzrsp2" />
<bpmn:sequenceFlow id="Flow_0gzlhk1" sourceRef="mkfzrsp2" targetRef="Gateway_0e1m7wn" />
<bpmn:sequenceFlow id="Flow_11c0pso" sourceRef="sjgcspg_2" targetRef="mkfzrsp_2" />
<bpmn:sequenceFlow id="Flow_0gzlhk1" sourceRef="mkfzrsp_2" targetRef="Gateway_0e1m7wn" />
<bpmn:sequenceFlow id="Flow_1tfvdpt" name="通过" sourceRef="Gateway_0e1m7wn" targetRef="Event_0662euh">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_1q5kwu9" sourceRef="mkfzrzdbh" targetRef="sjgcspg2" />
<bpmn:userTask id="mkfzrff_2" name="模块负责人自动分发" activiti:assignee="${moduleOwner}">
<bpmn:extensionElements>
<activiti:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
<activiti:taskListener class="com.jero.modules.activiti.process.projectstandard.listener.ProcessProjectStandardAutoListener" event="create" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_18i416j</bpmn:incoming>
<bpmn:outgoing>Flow_1m13a5m</bpmn:outgoing>
</bpmn:userTask>
<bpmn:sequenceFlow id="Flow_1m13a5m" sourceRef="mkfzrff_2" targetRef="sjgcspg_2" />
</bpmn:subProcess>
<bpmn:sequenceFlow id="Flow_0ff821d" sourceRef="Activity_072gbnv" targetRef="bszgjldsp" />
<bpmn:sequenceFlow id="Flow_0ff821d" sourceRef="Activity_072gbnv" targetRef="bszgjldsp_1" />
<bpmn:sequenceFlow id="Flow_06h9ihd" sourceRef="bszgjldxf" targetRef="Activity_08c4m85" />
<bpmn:sequenceFlow id="Flow_0ni7hxc" sourceRef="Activity_08c4m85" targetRef="bszgjldsp" />
<bpmn:sequenceFlow id="Flow_0ni7hxc" sourceRef="Activity_08c4m85" targetRef="bszgjldsp_1" />
</bpmn:subProcess>
<bpmn:sequenceFlow id="Flow_0w3nr57" sourceRef="Activity_1wp96uu" targetRef="fggcssp" />
<bpmn:exclusiveGateway id="Gateway_0mobyxv">
@@ -166,22 +170,22 @@
<bpmn:incoming>Flow_19ehxvl</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_19ehxvl" sourceRef="sjgcsbcgzlbh" targetRef="Event_1k7uv2r" />
<bpmn:userTask id="fggcssp" name="法规工程师审批" camunda:assignee="${standardsEngineer}">
<bpmn:userTask id="fggcssp" name="法规工程师审批" activiti:assignee="${standardsEngineer}">
<bpmn:incoming>Flow_0w3nr57</bpmn:incoming>
<bpmn:incoming>Flow_03v0fem</bpmn:incoming>
<bpmn:outgoing>Flow_1gw9i5e</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="sjgcsbcgzlbh" name="设计工程师补充工作令编号" camunda:assignee="${designEngineer}">
<bpmn:userTask id="sjgcsbcgzlbh" name="设计工程师补充工作令编号" activiti:assignee="${designEngineer}">
<bpmn:incoming>Flow_0c3ic1y</bpmn:incoming>
<bpmn:outgoing>Flow_19ehxvl</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics camunda:collection="designEngineerList" camunda:elementVariable="designEngineer">
<bpmn:multiInstanceLoopCharacteristics activiti:collection="designEngineerList" activiti:elementVariable="designEngineer">
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>
</bpmn:multiInstanceLoopCharacteristics>
</bpmn:userTask>
<bpmn:subProcess id="Activity_11wslv7" name="部所主管级领导审批流程">
<bpmn:incoming>Flow_0mngw8y</bpmn:incoming>
<bpmn:outgoing>Flow_03v0fem</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics camunda:collection="managerLeaderList" camunda:elementVariable="managerLeader">
<bpmn:multiInstanceLoopCharacteristics activiti:collection="managerLeaderList" activiti:elementVariable="managerLeader">
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>
</bpmn:multiInstanceLoopCharacteristics>
<bpmn:startEvent id="Event_1d40kan">
@@ -195,7 +199,7 @@
<bpmn:endEvent id="Event_1iw82mp">
<bpmn:incoming>Flow_1lchcby</bpmn:incoming>
</bpmn:endEvent>
<bpmn:userTask id="bszgjldsp2" name="部所主管级领导审批" camunda:assignee="${managerLeader}">
<bpmn:userTask id="bszgjldsp_2" name="部所主管级领导审批" activiti:assignee="${managerLeader}">
<bpmn:incoming>Flow_0x6qt62</bpmn:incoming>
<bpmn:incoming>Flow_1xkmz4n</bpmn:incoming>
<bpmn:outgoing>Flow_0juw2qw</bpmn:outgoing>
@@ -203,12 +207,12 @@
<bpmn:subProcess id="Activity_1xsrtpj" name="模块负责人驳回子流程">
<bpmn:incoming>Flow_0a4b22u</bpmn:incoming>
<bpmn:outgoing>Flow_1xkmz4n</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics camunda:collection="moduleOwnerList" camunda:elementVariable="moduleOwner">
<bpmn:multiInstanceLoopCharacteristics activiti:collection="moduleOwnerList" activiti:elementVariable="moduleOwner">
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>
</bpmn:multiInstanceLoopCharacteristics>
<bpmn:userTask id="mkfzrsp3" name="模块负责人审批" camunda:assignee="${moduleOwner}">
<bpmn:userTask id="mkfzrsp_3" name="模块负责人审批" activiti:assignee="${moduleOwner}">
<bpmn:extensionElements>
<camunda:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
<activiti:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_1wjzl0u</bpmn:incoming>
<bpmn:outgoing>Flow_19fpo83</bpmn:outgoing>
@@ -221,44 +225,48 @@
<bpmn:endEvent id="Event_0uendgp">
<bpmn:incoming>Flow_0920pid</bpmn:incoming>
</bpmn:endEvent>
<bpmn:userTask id="mkfzrzdbh2" name="模块负责人自动驳回">
<bpmn:incoming>Flow_1lw0nd8</bpmn:incoming>
<bpmn:outgoing>Flow_1d7lhvy</bpmn:outgoing>
</bpmn:userTask>
<bpmn:startEvent id="Event_0en8fvn">
<bpmn:outgoing>Flow_1lw0nd8</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:userTask id="sjgcspg3" name="设计工程师评估" camunda:assignee="${designEngineer}">
<bpmn:userTask id="sjgcspg_3" name="设计工程师评估" activiti:assignee="${designEngineer}">
<bpmn:extensionElements>
<camunda:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
<activiti:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_0j9t3br</bpmn:incoming>
<bpmn:incoming>Flow_1d7lhvy</bpmn:incoming>
<bpmn:incoming>Flow_1y4773i</bpmn:incoming>
<bpmn:outgoing>Flow_1wjzl0u</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics camunda:collection="designEngineerList" camunda:elementVariable="designEngineer">
<bpmn:multiInstanceLoopCharacteristics activiti:collection="designEngineerList" activiti:elementVariable="designEngineer">
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>
</bpmn:multiInstanceLoopCharacteristics>
</bpmn:userTask>
<bpmn:sequenceFlow id="Flow_19fpo83" sourceRef="mkfzrsp3" targetRef="Gateway_0fkslca" />
<bpmn:sequenceFlow id="Flow_0j9t3br" name="驳回" sourceRef="Gateway_0fkslca" targetRef="sjgcspg3">
<bpmn:sequenceFlow id="Flow_19fpo83" sourceRef="mkfzrsp_3" targetRef="Gateway_0fkslca" />
<bpmn:sequenceFlow id="Flow_0j9t3br" name="驳回" sourceRef="Gateway_0fkslca" targetRef="sjgcspg_3">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_0920pid" name="通过" sourceRef="Gateway_0fkslca" targetRef="Event_0uendgp">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_1lw0nd8" sourceRef="Event_0en8fvn" targetRef="mkfzrzdbh2" />
<bpmn:sequenceFlow id="Flow_1d7lhvy" sourceRef="mkfzrzdbh2" targetRef="sjgcspg3" />
<bpmn:sequenceFlow id="Flow_1wjzl0u" sourceRef="sjgcspg3" targetRef="mkfzrsp3" />
<bpmn:sequenceFlow id="Flow_1lw0nd8" sourceRef="Event_0en8fvn" targetRef="mkfzrff_3" />
<bpmn:sequenceFlow id="Flow_1wjzl0u" sourceRef="sjgcspg_3" targetRef="mkfzrsp_3" />
<bpmn:userTask id="mkfzrff_3" name="模块负责人自动分发" activiti:assignee="${moduleOwner}">
<bpmn:extensionElements>
<activiti:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
<activiti:taskListener class="com.jero.modules.activiti.process.projectstandard.listener.ProcessProjectStandardAutoListener" event="create" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_1lw0nd8</bpmn:incoming>
<bpmn:outgoing>Flow_1y4773i</bpmn:outgoing>
</bpmn:userTask>
<bpmn:sequenceFlow id="Flow_1y4773i" sourceRef="mkfzrff_3" targetRef="sjgcspg_3" />
</bpmn:subProcess>
<bpmn:sequenceFlow id="Flow_0juw2qw" sourceRef="bszgjldsp2" targetRef="Gateway_04xvn94" />
<bpmn:sequenceFlow id="Flow_0juw2qw" sourceRef="bszgjldsp_2" targetRef="Gateway_04xvn94" />
<bpmn:sequenceFlow id="Flow_0a4b22u" name="驳回" sourceRef="Gateway_04xvn94" targetRef="Activity_1xsrtpj">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_1lchcby" name="通过" sourceRef="Gateway_04xvn94" targetRef="Event_1iw82mp">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_1xkmz4n" sourceRef="Activity_1xsrtpj" targetRef="bszgjldsp2" />
<bpmn:sequenceFlow id="Flow_0x6qt62" sourceRef="Event_1d40kan" targetRef="bszgjldsp2" />
<bpmn:sequenceFlow id="Flow_1xkmz4n" sourceRef="Activity_1xsrtpj" targetRef="bszgjldsp_2" />
<bpmn:sequenceFlow id="Flow_0x6qt62" sourceRef="Event_1d40kan" targetRef="bszgjldsp_2" />
</bpmn:subProcess>
<bpmn:sequenceFlow id="Flow_0mngw8y" name="驳回" sourceRef="Gateway_0mobyxv" targetRef="Activity_11wslv7">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
@@ -266,13 +274,7 @@
<bpmn:sequenceFlow id="Flow_03v0fem" sourceRef="Activity_11wslv7" targetRef="fggcssp" />
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="regulations-assessment">
<bpmndi:BPMNShape id="Activity_1fh8fjh_di" bpmnElement="fggcssp">
<dc:Bounds x="1730" y="120" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_0mobyxv_di" bpmnElement="Gateway_0mobyxv" isMarkerVisible="true">
<dc:Bounds x="1945" y="135" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="standard-assessment">
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
<dc:Bounds x="159" y="252" width="36" height="36" />
</bpmndi:BPMNShape>
@@ -290,16 +292,6 @@
<dc:Bounds x="510" y="125" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_155ubeu" bpmnElement="bszgjldsp">
<dc:Bounds x="500" y="350" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_1qktq5f_di" bpmnElement="Gateway_1qktq5f" isMarkerVisible="true">
<dc:Bounds x="525" y="485" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_17bnh8x_di" bpmnElement="Event_17bnh8x">
<dc:Bounds x="532" y="592" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0njknr1_di" bpmnElement="Activity_08c4m85" isExpanded="true">
<dc:Bounds x="670" y="70" width="790" height="200" />
<bpmndi:BPMNLabel />
@@ -307,10 +299,10 @@
<bpmndi:BPMNShape id="Event_1ian0ub_di" bpmnElement="Event_1ian0ub">
<dc:Bounds x="710" y="152" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1vb9u4y_di" bpmnElement="sjgcspg">
<bpmndi:BPMNShape id="Activity_1vb9u4y_di" bpmnElement="sjgcspg_1">
<dc:Bounds x="950" y="130" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_19iwpt2" bpmnElement="mkfzrsp">
<bpmndi:BPMNShape id="BPMNShape_19iwpt2" bpmnElement="mkfzrsp_1">
<dc:Bounds x="1140" y="130" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
@@ -320,12 +312,12 @@
<bpmndi:BPMNShape id="Event_151o5cu_di" bpmnElement="Event_151o5cu">
<dc:Bounds x="1392" y="152" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_02udv1z_di" bpmnElement="mkfzrff">
<dc:Bounds x="790" y="130" width="100" height="80" />
<bpmndi:BPMNShape id="Activity_02udv1z_di" bpmnElement="mkfzrff_1">
<dc:Bounds x="800" y="130" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_0xb4gtd_di" bpmnElement="Flow_0xb4gtd">
<di:waypoint x="746" y="170" />
<di:waypoint x="790" y="170" />
<di:waypoint x="800" y="170" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1w5wrt4_di" bpmnElement="Flow_1w5wrt4">
<di:waypoint x="1240" y="170" />
@@ -348,13 +340,23 @@
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0a6biwg_di" bpmnElement="Flow_0a6biwg">
<di:waypoint x="890" y="170" />
<di:waypoint x="900" y="170" />
<di:waypoint x="950" y="170" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_197effc_di" bpmnElement="Flow_197effc">
<di:waypoint x="1050" y="170" />
<di:waypoint x="1140" y="170" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="BPMNShape_155ubeu" bpmnElement="bszgjldsp_1">
<dc:Bounds x="500" y="350" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_1qktq5f_di" bpmnElement="Gateway_1qktq5f" isMarkerVisible="true">
<dc:Bounds x="525" y="485" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_17bnh8x_di" bpmnElement="Event_17bnh8x">
<dc:Bounds x="532" y="592" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1sv6oe4" bpmnElement="Activity_072gbnv" isExpanded="true">
<dc:Bounds x="710" y="340" width="750" height="250" />
<bpmndi:BPMNLabel />
@@ -362,14 +364,10 @@
<bpmndi:BPMNShape id="BPMNShape_046x6b9" bpmnElement="Event_1awayw1">
<dc:Bounds x="732" y="442" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_09vjbtx" bpmnElement="mkfzrzdbh">
<dc:Bounds x="810" y="420" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_12g34bf" bpmnElement="sjgcspg2">
<bpmndi:BPMNShape id="BPMNShape_12g34bf" bpmnElement="sjgcspg_2">
<dc:Bounds x="970" y="420" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1hap6ua" bpmnElement="mkfzrsp2">
<bpmndi:BPMNShape id="BPMNShape_1hap6ua" bpmnElement="mkfzrsp_2">
<dc:Bounds x="1130" y="420" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
@@ -379,13 +377,13 @@
<bpmndi:BPMNShape id="BPMNShape_19mf899" bpmnElement="Event_0662euh">
<dc:Bounds x="1382" y="442" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1smc6im" bpmnElement="mkfzrff_2">
<dc:Bounds x="820" y="420" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="BPMNEdge_0i6wiem" bpmnElement="Flow_18i416j">
<di:waypoint x="768" y="460" />
<di:waypoint x="810" y="460" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1q5kwu9_di" bpmnElement="Flow_1q5kwu9">
<di:waypoint x="910" y="460" />
<di:waypoint x="970" y="460" />
<di:waypoint x="820" y="460" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0b1d2f6" bpmnElement="Flow_1al6zeq">
<di:waypoint x="1290" y="435" />
@@ -411,15 +409,30 @@
<dc:Bounds x="1338" y="442" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1m13a5m_di" bpmnElement="Flow_1m13a5m">
<di:waypoint x="920" y="460" />
<di:waypoint x="970" y="460" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1g6zc95_di" bpmnElement="Flow_1g6zc95">
<di:waypoint x="466" y="165" />
<di:waypoint x="510" y="165" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_10o9sl2_di" bpmnElement="Flow_10o9sl2">
<di:waypoint x="550" y="430" />
<di:waypoint x="550" y="485" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_11i64js_di" bpmnElement="Flow_11i64js">
<di:waypoint x="575" y="510" />
<di:waypoint x="710" y="510" />
<bpmndi:BPMNLabel>
<dc:Bounds x="641" y="393" width="21" height="14" />
<dc:Bounds x="629" y="493" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_132fp4x_di" bpmnElement="Flow_132fp4x">
<di:waypoint x="550" y="535" />
<di:waypoint x="550" y="592" />
<bpmndi:BPMNLabel>
<dc:Bounds x="554" y="549" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0ff821d_di" bpmnElement="Flow_0ff821d">
@@ -435,20 +448,15 @@
<di:waypoint x="550" y="243" />
<di:waypoint x="550" y="350" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_10o9sl2_di" bpmnElement="Flow_10o9sl2">
<di:waypoint x="550" y="430" />
<di:waypoint x="550" y="485" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_132fp4x_di" bpmnElement="Flow_132fp4x">
<di:waypoint x="550" y="535" />
<di:waypoint x="550" y="592" />
<bpmndi:BPMNLabel>
<dc:Bounds x="554" y="549" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Gateway_0mobyxv_di" bpmnElement="Gateway_0mobyxv" isMarkerVisible="true">
<dc:Bounds x="1945" y="135" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1k7uv2r_di" bpmnElement="Event_1k7uv2r">
<dc:Bounds x="2342" y="142" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1fh8fjh_di" bpmnElement="fggcssp">
<dc:Bounds x="1730" y="120" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0y90822_di" bpmnElement="sjgcsbcgzlbh">
<dc:Bounds x="2140" y="120" width="100" height="80" />
</bpmndi:BPMNShape>
@@ -456,9 +464,8 @@
<dc:Bounds x="1540" y="300" width="1090" height="380" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1gx36q9" bpmnElement="bszgjldsp2">
<dc:Bounds x="1670" y="390" width="100" height="80" />
<bpmndi:BPMNLabel />
<bpmndi:BPMNShape id="BPMNShape_0j8sx43" bpmnElement="Event_1d40kan">
<dc:Bounds x="1572" y="412" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0zy68mu" bpmnElement="Gateway_04xvn94" isMarkerVisible="true">
<dc:Bounds x="1695" y="505" width="50" height="50" />
@@ -466,14 +473,15 @@
<bpmndi:BPMNShape id="BPMNShape_0yvczwi" bpmnElement="Event_1iw82mp">
<dc:Bounds x="1702" y="612" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0j8sx43" bpmnElement="Event_1d40kan">
<dc:Bounds x="1572" y="412" width="36" height="36" />
<bpmndi:BPMNShape id="BPMNShape_1gx36q9" bpmnElement="bszgjldsp_2">
<dc:Bounds x="1670" y="390" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1m87r68" bpmnElement="Activity_1xsrtpj" isExpanded="true">
<dc:Bounds x="1830" y="330" width="750" height="245" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0c83r33" bpmnElement="mkfzrsp3">
<bpmndi:BPMNShape id="BPMNShape_0c83r33" bpmnElement="mkfzrsp_3">
<dc:Bounds x="2250" y="410" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
@@ -483,20 +491,16 @@
<bpmndi:BPMNShape id="BPMNShape_1tisvmf" bpmnElement="Event_0uendgp">
<dc:Bounds x="2502" y="432" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1wlb78t" bpmnElement="mkfzrzdbh2">
<dc:Bounds x="1930" y="410" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1tygdud" bpmnElement="Event_0en8fvn">
<dc:Bounds x="1852" y="432" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1fv02ul" bpmnElement="sjgcspg3">
<bpmndi:BPMNShape id="BPMNShape_1fv02ul" bpmnElement="sjgcspg_3">
<dc:Bounds x="2090" y="410" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="BPMNEdge_1wy27v4" bpmnElement="Flow_1wjzl0u">
<di:waypoint x="2190" y="450" />
<di:waypoint x="2250" y="450" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="BPMNShape_0y70zxq" bpmnElement="mkfzrff_3">
<dc:Bounds x="1940" y="410" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="BPMNEdge_0qxym6m" bpmnElement="Flow_19fpo83">
<di:waypoint x="2350" y="450" />
<di:waypoint x="2385" y="450" />
@@ -519,20 +523,16 @@
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0bnzbta" bpmnElement="Flow_1lw0nd8">
<di:waypoint x="1888" y="450" />
<di:waypoint x="1930" y="450" />
<di:waypoint x="1940" y="450" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0hzqqxy" bpmnElement="Flow_1d7lhvy">
<di:waypoint x="2030" y="450" />
<bpmndi:BPMNEdge id="BPMNEdge_1wy27v4" bpmnElement="Flow_1wjzl0u">
<di:waypoint x="2190" y="450" />
<di:waypoint x="2250" y="450" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1y4773i_di" bpmnElement="Flow_1y4773i">
<di:waypoint x="2040" y="450" />
<di:waypoint x="2090" y="450" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0x6qt62_di" bpmnElement="Flow_0x6qt62">
<di:waypoint x="1608" y="430" />
<di:waypoint x="1670" y="430" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1gcltsg" bpmnElement="Flow_1xkmz4n">
<di:waypoint x="1830" y="430" />
<di:waypoint x="1770" y="430" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1v1g3u8" bpmnElement="Flow_0juw2qw">
<di:waypoint x="1720" y="470" />
<di:waypoint x="1720" y="505" />
@@ -541,7 +541,7 @@
<di:waypoint x="1745" y="530" />
<di:waypoint x="1830" y="530" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1772" y="493" width="21" height="14" />
<dc:Bounds x="1769" y="513" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1do4zil" bpmnElement="Flow_1lchcby">
@@ -551,6 +551,18 @@
<dc:Bounds x="1724" y="569" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1gcltsg" bpmnElement="Flow_1xkmz4n">
<di:waypoint x="1830" y="430" />
<di:waypoint x="1770" y="430" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0x6qt62_di" bpmnElement="Flow_0x6qt62">
<di:waypoint x="1608" y="430" />
<di:waypoint x="1670" y="430" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_12b9yhd_di" bpmnElement="Flow_12b9yhd">
<di:waypoint x="195" y="270" />
<di:waypoint x="250" y="270" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0tgn37q_di" bpmnElement="Flow_0tgn37q">
<di:waypoint x="350" y="270" />
<di:waypoint x="400" y="270" />
@@ -585,10 +597,6 @@
<di:waypoint x="1780" y="300" />
<di:waypoint x="1780" y="200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_12b9yhd_di" bpmnElement="Flow_12b9yhd">
<di:waypoint x="195" y="270" />
<di:waypoint x="250" y="270" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>
File diff suppressed because it is too large Load Diff