add 年度制修订计划流程 基础代码

This commit is contained in:
lijiarao
2024-09-24 17:13:32 +08:00
parent 8b2365ebbc
commit f07004ae35
12 changed files with 988 additions and 0 deletions
@@ -0,0 +1,37 @@
package com.jero.modules.activiti.process.annualinit.common;
/**
* @author liJiaRao
* @date 2024-09-24 15:10
*/
public class ProcessAnnualInitCommon {
//起草人发起
public static String QCRFQ = "qcrfq";
//法规部门经理审批
public static String FGBMJLSP = "fgbmjlsp";
//部门经理审批
public static String BMJLSP = "bmjlsp";
//法规部门处理人审批
public static String FGBMCLRSP = "fgbmclrsp";
//授权人审批
public static String SQRSP = "sqrsp";
//高级经理审批
public static String GJJLSP = "gjjlsp";
//总监审批
public static String ZJSP = "zjsp";
//起草人
public static String MAIN_DRAFTING_USER = "mainDraftingUser";
//法规部门经理
public static String STANDARD_DEPART_MANAGER = "standardDepartManager";
//部门经理
public static String DEPART_MANAGER_LIST = "departManagerList";
//法规部门处理人
public static String STANDARD_DEPART_HANDLER = "standardDepartHandler";
//授权人
public static String AUTHORIZED_PERSON_LIST = "authorizedPersonList";
//高级经理
public static String SENIOR_MANAGER_LIST = "seniorManagerList";
//总监
public static String CHIEF_INSPECTOR_LIST = "chiefInspectorList";
}
@@ -0,0 +1,64 @@
package com.jero.modules.activiti.process.annualinit.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.system.base.controller.JeroController;
import com.jero.modules.activiti.process.annualinit.entity.ProcessAnnualInit;
import com.jero.modules.activiti.process.annualinit.service.ProcessAnnualInitService;
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.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* 年度制修订计划流程(ProcessAnnualInit)表控制层
*
* @author lijiarao
* @since 2024-09-24 14:13:42
*/
@Slf4j
@Api(tags = "年度制修订计划流程")
@RestController
@RequestMapping("/process/processAnnualInit")
public class ProcessAnnualInitController extends JeroController<ProcessAnnualInit, ProcessAnnualInitService> {
/**
* 服务对象
*/
@Resource
private ProcessAnnualInitService processAnnualInitService;
@AutoLog(value = "年度制修订计划流程-发起流程")
@ApiOperation(value = "年度制修订计划流程-发起流程")
@PostMapping(value = "/startProcess")
public Result<T> startProcess(@Validated @RequestBody ProcessInfoVO<ProcessAnnualInit> processInfoVO) {
processAnnualInitService.startProcess(processInfoVO);
return Result.OK();
}
@AutoLog(value = "年度制修订计划流程-同意")
@ApiOperation(value = "年度制修订计划流程-同意")
@PostMapping("/agree")
public Result<T> agree(@Validated @RequestBody ProcessInfoVO<ProcessAnnualInit> processInfoVO) {
processAnnualInitService.approveTask(processInfoVO, true);
return Result.OK();
}
@AutoLog(value = "年度制修订计划流程-驳回")
@ApiOperation(value = "年度制修订计划流程-驳回")
@PostMapping("/reject")
public Result<T> reject(@Validated @RequestBody ProcessInfoVO<ProcessAnnualInit> processInfoVO) {
processAnnualInitService.approveTask(processInfoVO, false);
return Result.OK();
}
}
@@ -0,0 +1,116 @@
package com.jero.modules.activiti.process.annualinit.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import lombok.Data;
import io.swagger.annotations.ApiModel;
/**
* 年度制修订计划流程(ProcessAnnualInit)实体类
*
* @author lijiarao
* @since 2024-09-24 14:13:42
*/
@Data
@TableName("process_annual_init")
@ApiModel(value = "ProcessAnnualInit", description = "年度制修订计划流程")
public class ProcessAnnualInit implements Serializable {
private static final long serialVersionUID = -24249950589081692L;
/**
* 主键id
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键id")
private String id;
/**
* 部门经理
*/
@ApiModelProperty(value = "部门经理")
@Excel(name = "部门经理", width = 15)
private String departManager;
/**
* 法规部门处理人id
*/
@ApiModelProperty(value = "法规部门处理人id")
@Excel(name = "法规部门处理人id", width = 15)
private String standardDepartHandler;
/**
* 法规部门经理id
*/
@ApiModelProperty(value = "法规部门经理id")
@Excel(name = "法规部门经理id", width = 15)
private String standardDepartManager;
/**
* 高级经理
*/
@ApiModelProperty(value = "高级经理")
@Excel(name = "高级经理", width = 15)
private String seniorManager;
/**
* 总监
*/
@ApiModelProperty(value = "总监")
@Excel(name = "总监", width = 15)
private String chiefInspector;
/**
* 授权人id
*/
@ApiModelProperty(value = "授权人id")
@Excel(name = "授权人id", width = 15)
private String authorizedPerson;
/**
* 附件
*/
@ApiModelProperty(value = "附件")
@Excel(name = "附件", width = 15)
private String file;
/**
* 创建人
*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date createTime;
/**
* 更新人
*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date updateTime;
/**
* 所属部门
*/
@ApiModelProperty(value = "所属部门")
private String orgCode;
/**
* 删除状态(0-正常,1-删除)
*/
@ApiModelProperty(value = "删除状态(0-正常,1-删除)")
@TableLogic
private String delFlag;
}
@@ -0,0 +1,150 @@
package com.jero.modules.activiti.process.annualinit.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import lombok.Data;
import io.swagger.annotations.ApiModel;
/**
* 年度制修订计划流程关联标准(ProcessAnnualInitLink)实体类
*
* @author lijiarao
* @since 2024-09-24 14:30:21
*/
@Data
@TableName("process_annual_init_link")
@ApiModel(value = "ProcessAnnualInitLink", description = "年度制修订计划流程关联标准")
public class ProcessAnnualInitLink implements Serializable {
private static final long serialVersionUID = 647513571439825961L;
/**
* 主键id
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键id")
private String id;
/**
* 流程主表id
*/
@ApiModelProperty(value = "流程主表id")
@Excel(name = "流程主表id", width = 15)
private String processId;
/**
* 制修订类别
*/
@ApiModelProperty(value = "制修订类别")
@Excel(name = "制修订类别", width = 15)
private String revisionType;
/**
* 标准id
*/
@ApiModelProperty(value = "标准id")
@Excel(name = "标准id", width = 15)
private String standardId;
/**
* 标准编号
*/
@ApiModelProperty(value = "标准编号")
@Excel(name = "标准编号", width = 15)
private String standardNumber;
/**
* 标准名称
*/
@ApiModelProperty(value = "标准名称")
@Excel(name = "标准名称", width = 15)
private String standardName;
/**
* 起草人
*/
@ApiModelProperty(value = "起草人")
@Excel(name = "起草人", width = 15)
private String mainDraftingUser;
/**
* 所在部门id
*/
@ApiModelProperty(value = "所在部门id")
@Excel(name = "所在部门id", width = 15)
private String departId;
/**
* 专业模块
*/
@ApiModelProperty(value = "专业模块")
@Excel(name = "专业模块", width = 15)
private String professionalModule;
/**
* 初稿完成日期
*/
@ApiModelProperty(value = "初稿完成日期")
@Excel(name = "初稿完成日期", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date draftCompleteDate;
/**
* 计划归档日期
*/
@ApiModelProperty(value = "计划归档日期")
@Excel(name = "计划归档日期", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date planArchivingDate;
/**
* 是否有英文版
*/
@ApiModelProperty(value = "是否有英文版")
@Excel(name = "是否有英文版", width = 15)
private String haveEnglishVersion;
/**
* 所属技术委员会
*/
@ApiModelProperty(value = "所属技术委员会")
@Excel(name = "所属技术委员会", width = 15)
private String committee;
/**
* 创建人
*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date createTime;
/**
* 更新人
*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date updateTime;
/**
* 所属部门
*/
@ApiModelProperty(value = "所属部门")
private String orgCode;
/**
* 删除状态(0-正常,1-删除)
*/
@ApiModelProperty(value = "删除状态(0-正常,1-删除)")
@TableLogic
private Integer delFlag;
}
@@ -0,0 +1,15 @@
package com.jero.modules.activiti.process.annualinit.mapper;
import com.jero.modules.activiti.process.annualinit.entity.ProcessAnnualInitLink;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* 年度制修订计划流程关联标准(ProcessAnnualInitLink)表数据库访问层
*
* @author lijiarao
* @since 2024-09-24 14:30:21
*/
public interface ProcessAnnualInitLinkMapper extends BaseMapper<ProcessAnnualInitLink> {
}
@@ -0,0 +1,15 @@
package com.jero.modules.activiti.process.annualinit.mapper;
import com.jero.modules.activiti.process.annualinit.entity.ProcessAnnualInit;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* 年度制修订计划流程(ProcessAnnualInit)表数据库访问层
*
* @author lijiarao
* @since 2024-09-24 14:13:42
*/
public interface ProcessAnnualInitMapper extends BaseMapper<ProcessAnnualInit> {
}
@@ -0,0 +1,49 @@
<?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.annualinit.mapper.ProcessAnnualInitLinkMapper">
<resultMap id="BaseResultMap" type="com.jero.modules.activiti.process.annualinit.entity.ProcessAnnualInitLink">
<!--@Table process_annual_init_link-->
<result property="id" column="id" jdbcType="VARCHAR"/>
<result property="processId" column="process_id" jdbcType="VARCHAR"/>
<result property="revisionType" column="revision_type" jdbcType="VARCHAR"/>
<result property="standardId" column="standard_id" jdbcType="VARCHAR"/>
<result property="standardNumber" column="standard_number" jdbcType="VARCHAR"/>
<result property="standardName" column="standard_name" jdbcType="VARCHAR"/>
<result property="mainDraftingUser" column="main_drafting_user" jdbcType="VARCHAR"/>
<result property="departId" column="depart_id" jdbcType="VARCHAR"/>
<result property="professionalModule" column="professional_module" jdbcType="VARCHAR"/>
<result property="draftCompleteDate" column="draft_complete_date" jdbcType="TIMESTAMP"/>
<result property="planArchivingDate" column="plan_archiving_date" jdbcType="TIMESTAMP"/>
<result property="haveEnglishVersion" column="have_english_version" jdbcType="VARCHAR"/>
<result property="committee" column="committee" jdbcType="VARCHAR"/>
<result property="createBy" column="create_by" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="orgCode" column="org_code" jdbcType="VARCHAR"/>
<result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
</resultMap>
<sql id="Base_Column_List">
id,
process_id,
revision_type,
standard_id,
standard_number,
standard_name,
main_drafting_user,
depart_id,
professional_module,
draft_complete_date,
plan_archiving_date,
have_english_version,
committee,
create_by,
create_time,
update_by,
update_time,
org_code,
del_flag
</sql>
</mapper>
@@ -0,0 +1,39 @@
<?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.annualinit.mapper.ProcessAnnualInitMapper">
<resultMap id="BaseResultMap" type="com.jero.modules.activiti.process.annualinit.entity.ProcessAnnualInit">
<!--@Table process_annual_init-->
<result property="id" column="id" jdbcType="VARCHAR"/>
<result property="departManager" column="depart_manager" jdbcType="VARCHAR"/>
<result property="standardDepartHandler" column="standard_depart_handler" jdbcType="VARCHAR"/>
<result property="standardDepartManager" column="standard_depart_manager" jdbcType="VARCHAR"/>
<result property="seniorManager" column="senior_manager" jdbcType="VARCHAR"/>
<result property="chiefInspector" column="chief_inspector" jdbcType="VARCHAR"/>
<result property="authorizedPerson" column="authorized_person" jdbcType="VARCHAR"/>
<result property="file" column="file" jdbcType="VARCHAR"/>
<result property="createBy" column="create_by" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="orgCode" column="org_code" jdbcType="VARCHAR"/>
<result property="delFlag" column="del_flag" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id,
depart_manager,
standard_depart_handler,
standard_depart_manager,
senior_manager,
chief_inspector,
authorized_person,
file,
create_by,
create_time,
update_by,
update_time,
org_code,
del_flag
</sql>
</mapper>
@@ -0,0 +1,59 @@
package com.jero.modules.activiti.process.annualinit.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.activiti.process.annualinit.entity.ProcessAnnualInitLink;
import com.jero.modules.activiti.process.annualinit.mapper.ProcessAnnualInitLinkMapper;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
/**
* 年度制修订计划流程关联标准(ProcessAnnualInitLink)表服务实现类
*
* @author lijiarao
* @since 2024-09-24 14:30:22
*/
@Slf4j
@Service()
public class ProcessAnnualInitLinkService extends ServiceImpl<ProcessAnnualInitLinkMapper, ProcessAnnualInitLink> {
@Resource
private ProcessAnnualInitLinkMapper processAnnualInitLinkMapper;
public IPage<ProcessAnnualInitLink> pageList(Page<ProcessAnnualInitLink> page, ProcessAnnualInitLink processAnnualInitLink, HttpServletRequest req) {
QueryWrapper<ProcessAnnualInitLink> queryWrapper = QueryGenerator.initQueryWrapper(processAnnualInitLink, req.getParameterMap());
return this.page(page, queryWrapper);
}
public void add(ProcessAnnualInitLink processAnnualInitLink) {
this.save(processAnnualInitLink);
}
public void editById(ProcessAnnualInitLink processAnnualInitLink) {
this.updateById(processAnnualInitLink);
}
public void deleteById(String id) {
this.removeById(id);
}
public void deleteByIds(List<String> idList) {
for (String id : idList) {
deleteById(id);
}
}
public ProcessAnnualInitLink queryById(String id) {
ProcessAnnualInitLink processAnnualInitLink = this.getById(id);
return processAnnualInitLink;
}
}
@@ -0,0 +1,128 @@
package com.jero.modules.activiti.process.annualinit.service;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.system.api.ISysBaseAPI;
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.annualinit.common.ProcessAnnualInitCommon;
import com.jero.modules.activiti.process.annualinit.entity.ProcessAnnualInit;
import com.jero.modules.activiti.process.annualinit.mapper.ProcessAnnualInitMapper;
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.BasicTaskInfoDTO;
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.service.ProcessAllService;
import com.jero.modules.laws.common.util.CurrentUserUtil;
import org.activiti.engine.TaskService;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* 年度制修订计划流程(ProcessAnnualInit)表服务实现类
*
* @author lijiarao
* @since 2024-09-24 14:13:43
*/
@Slf4j
@Service()
public class ProcessAnnualInitService extends ServiceImpl<ProcessAnnualInitMapper, ProcessAnnualInit> {
@Resource
private ProcessAnnualInitMapper processAnnualInitMapper;
@Resource
private ISysBaseAPI sysBaseAPI;
@Resource
private IProcessHandleService processHandleService;
@Resource
private ProcessAllService processAllService;
@Resource
private TaskService taskService;
public void startProcess(ProcessInfoVO<ProcessAnnualInit> processInfoVO) {
Map<String, Object> userInfoMap = processInfoVO.getUserInfoMap();
ProcessAnnualInit businessInfoDTO = processInfoVO.getBusinessInfoDTO();
//this.save(processAnnualInit);
//String processAnnualInitId = processAnnualInit.getId();
//processInfoVO.setBusinessId(processAnnualInitId);
//启动流程
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
//改为手动流程名称
//basicProcessInfoDTO.setProcessName(standardNumber+"-"+standardName+"未符合项跟踪");
basicProcessInfoDTO.setProcessDefinitionId(processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.ANNUAL_INIT)); // 流程定义id
basicProcessInfoDTO.setProcessType(ProcessTypeEnum.ANNUAL_INIT.getValue()); // 流程类型
userInfoMap.put(ProcessAnnualInitCommon.MAIN_DRAFTING_USER, CurrentUserUtil.getId());
//processInfoVO.setUserInfoMap(userInfoMap);
processHandleService.startProcess(processInfoVO);
//保存快照 start
processHandleService.saveToSnapshot(processInfoVO,CurrentUserUtil.getId());
//保存快照 end
//start 先保存一份初始草稿
processInfoVO.setSaveSource(DraftCommon.INITIAL_SOURCE);
processInfoVO.setBasicTaskInfoDTO(processInfoVO.getBasicTaskInfoDTO().setTaskId(null));
//end 保存初始草稿结束
}
public void approveTask(ProcessInfoVO<ProcessAnnualInit> processInfoVO, boolean pass) {
BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO();
String taskId = basicTaskInfoDTO.getTaskId();
ProcessDTO processDTO = processHandleService.getProcessDTO(taskId);
String processInstanceId = processDTO.getProcessInstanceId();
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
processInfoVO.setBusinessId(processAll.getProjectId());
Task task = processDTO.getTask();
String taskDefinitionKey = task.getTaskDefinitionKey();
processHandleService.updateApprovalRecord(processInfoVO);
//switch (taskDefinitionKey) {
// //主管级领导审批
// case ProcessProjectNotMetCommon.ZGJLDSP:
// zgjldspApprove(processInfoVO, processDTO, pass);
// break;
// //法规工程师审批
// case ProcessProjectNotMetCommon.FGGCSSP:
// fggcsspApprove(processInfoVO, processDTO, pass, processAll);
// break;
// default:
//}
}
private void zgjldspApprove(ProcessInfoVO<ProcessAnnualInit> processInfoVO, ProcessDTO processDTO, boolean pass) {
ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord();
String originUserId = processApprovalRecord.getOriginUserId();
String userId = CurrentUserUtil.getId();
String businessId = processInfoVO.getBusinessId();
// 完成任务
Map<String, Object> variables = new HashMap<>();
//variables.put(ProcessProjectNotMetCommon.PASS, pass);
////variables.put(ProcessProjectNotMetCommon.MANAGER_LEADER, userId);
//taskService.complete(processDTO.getTaskId(), variables);
//if (!Objects.equals(userId,originUserId)){
// LambdaUpdateWrapper<ProcessProjectNotMet> updateWrapper = new LambdaUpdateWrapper<>();
// updateWrapper.eq(ProcessProjectNotMet::getId,businessId);
// updateWrapper.set(ProcessProjectNotMet::getManagerLeaderId,userId);
// update(updateWrapper);
//}
}
}
@@ -0,0 +1,313 @@
<?xml version="1.0" encoding="UTF-8"?>
<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="process-annual-init" name="企业标准年度制修订计划流程" isExecutable="true">
<bpmn:startEvent id="StartEvent_1">
<bpmn:outgoing>Flow_0hrnklg</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:userTask id="qcrfq" name="起草人发起" activiti:assignee="${mainDraftingUser}">
<bpmn:incoming>Flow_0hrnklg</bpmn:incoming>
<bpmn:incoming>Flow_1jzk2qn</bpmn:incoming>
<bpmn:incoming>Flow_1e2ecjo</bpmn:incoming>
<bpmn:incoming>Flow_1torqxs</bpmn:incoming>
<bpmn:incoming>Flow_04fjdt8</bpmn:incoming>
<bpmn:incoming>Flow_0u3ivmh</bpmn:incoming>
<bpmn:incoming>Flow_11hc0o0</bpmn:incoming>
<bpmn:outgoing>Flow_0ndqyc9</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="fgbmjlsp" name="法规部门经理审批" activiti:assignee="${standardDepartManager}">
<bpmn:incoming>Flow_0eu6g3b</bpmn:incoming>
<bpmn:outgoing>Flow_1uaygks</bpmn:outgoing>
</bpmn:userTask>
<bpmn:endEvent id="Event_0nxyypv">
<bpmn:incoming>Flow_0r76okg</bpmn:incoming>
</bpmn:endEvent>
<bpmn:userTask id="bmjlsp" name="部门经理审批" activiti:assignee="${departManager}">
<bpmn:incoming>Flow_0ndqyc9</bpmn:incoming>
<bpmn:outgoing>Flow_1q5o6tr</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics activiti:collection="departManagerList" activiti:elementVariable="departManager">
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances || !pass}</bpmn:completionCondition>
</bpmn:multiInstanceLoopCharacteristics>
</bpmn:userTask>
<bpmn:userTask id="fgbmclrsp" name="法规部门处理人审批" activiti:assignee="${standardDepartHandler}">
<bpmn:incoming>Flow_1ko64jc</bpmn:incoming>
<bpmn:outgoing>Flow_0rn2xkx</bpmn:outgoing>
</bpmn:userTask>
<bpmn:exclusiveGateway id="Gateway_02v5162">
<bpmn:incoming>Flow_0rn2xkx</bpmn:incoming>
<bpmn:outgoing>Flow_0eu6g3b</bpmn:outgoing>
<bpmn:outgoing>Flow_1torqxs</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_1mqjvoq">
<bpmn:incoming>Flow_1uaygks</bpmn:incoming>
<bpmn:outgoing>Flow_0ame206</bpmn:outgoing>
<bpmn:outgoing>Flow_1e2ecjo</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_0ndqyc9" sourceRef="qcrfq" targetRef="bmjlsp" />
<bpmn:sequenceFlow id="Flow_0eu6g3b" name="通过" sourceRef="Gateway_02v5162" targetRef="fgbmjlsp">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_1uaygks" sourceRef="fgbmjlsp" targetRef="Gateway_1mqjvoq" />
<bpmn:sequenceFlow id="Flow_0ame206" name="通过" sourceRef="Gateway_1mqjvoq" targetRef="gjjlsp">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_1torqxs" name="驳回" sourceRef="Gateway_02v5162" targetRef="qcrfq">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_1e2ecjo" name="驳回" sourceRef="Gateway_1mqjvoq" targetRef="qcrfq">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_1ko64jc" name="通过" sourceRef="Gateway_1hod8pk" targetRef="fgbmclrsp" />
<bpmn:sequenceFlow id="Flow_0rn2xkx" sourceRef="fgbmclrsp" targetRef="Gateway_02v5162" />
<bpmn:sequenceFlow id="Flow_0hrnklg" sourceRef="StartEvent_1" targetRef="qcrfq" />
<bpmn:exclusiveGateway id="Gateway_1hod8pk">
<bpmn:incoming>Flow_1q5o6tr</bpmn:incoming>
<bpmn:outgoing>Flow_1ko64jc</bpmn:outgoing>
<bpmn:outgoing>Flow_1jzk2qn</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_1q5o6tr" sourceRef="bmjlsp" targetRef="Gateway_1hod8pk" />
<bpmn:sequenceFlow id="Flow_1jzk2qn" name="驳回" sourceRef="Gateway_1hod8pk" targetRef="qcrfq">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:userTask id="sqrsp" name="授权人审批" activiti:assignee="${authorizedPerson}">
<bpmn:incoming>Flow_0xhpgf5</bpmn:incoming>
<bpmn:outgoing>Flow_0j4zrgs</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics activiti:collection="authorizedPersonList" activiti:elementVariable="authorizedPerson">
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances || !pass}</bpmn:completionCondition>
</bpmn:multiInstanceLoopCharacteristics>
</bpmn:userTask>
<bpmn:userTask id="gjjlsp" name="高级经理审批" activiti:assignee="${seniorManager}">
<bpmn:incoming>Flow_0ame206</bpmn:incoming>
<bpmn:outgoing>Flow_0y6f9vg</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics activiti:collection="seniorManagerList" activiti:elementVariable="seniorManager">
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances || !pass}</bpmn:completionCondition>
</bpmn:multiInstanceLoopCharacteristics>
</bpmn:userTask>
<bpmn:userTask id="zjsp" name="总监审批" activiti:assignee="${chiefInspector}">
<bpmn:incoming>Flow_1uuss1x</bpmn:incoming>
<bpmn:outgoing>Flow_0my3hgz</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics activiti:collection="chiefInspectorList" activiti:elementVariable="chiefInspector">
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances || !pass}</bpmn:completionCondition>
</bpmn:multiInstanceLoopCharacteristics>
</bpmn:userTask>
<bpmn:exclusiveGateway id="Gateway_12wcfht">
<bpmn:incoming>Flow_0my3hgz</bpmn:incoming>
<bpmn:outgoing>Flow_0xhpgf5</bpmn:outgoing>
<bpmn:outgoing>Flow_0u3ivmh</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_0ivnwnx">
<bpmn:incoming>Flow_0j4zrgs</bpmn:incoming>
<bpmn:outgoing>Flow_0r76okg</bpmn:outgoing>
<bpmn:outgoing>Flow_11hc0o0</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_037rogw">
<bpmn:incoming>Flow_0y6f9vg</bpmn:incoming>
<bpmn:outgoing>Flow_1uuss1x</bpmn:outgoing>
<bpmn:outgoing>Flow_04fjdt8</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_0xhpgf5" name="通过" sourceRef="Gateway_12wcfht" targetRef="sqrsp">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_0j4zrgs" sourceRef="sqrsp" targetRef="Gateway_0ivnwnx" />
<bpmn:sequenceFlow id="Flow_0y6f9vg" sourceRef="gjjlsp" targetRef="Gateway_037rogw" />
<bpmn:sequenceFlow id="Flow_1uuss1x" name="通过" sourceRef="Gateway_037rogw" targetRef="zjsp">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_0my3hgz" sourceRef="zjsp" targetRef="Gateway_12wcfht" />
<bpmn:sequenceFlow id="Flow_0r76okg" name="通过" sourceRef="Gateway_0ivnwnx" targetRef="Event_0nxyypv">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_04fjdt8" name="驳回" sourceRef="Gateway_037rogw" targetRef="qcrfq">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_0u3ivmh" name="驳回" sourceRef="Gateway_12wcfht" targetRef="qcrfq">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_11hc0o0" name="驳回" sourceRef="Gateway_0ivnwnx" targetRef="qcrfq">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="process-annual-init">
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
<dc:Bounds x="152" y="172" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_03wwtxl_di" bpmnElement="qcrfq">
<dc:Bounds x="230" y="150" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1uw77uz" bpmnElement="fgbmjlsp">
<dc:Bounds x="760" y="150" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_0nxyypv_di" bpmnElement="Event_0nxyypv">
<dc:Bounds x="1612" y="172" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0hjb91v" bpmnElement="bmjlsp">
<dc:Bounds x="360" y="150" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_03jj2f8" bpmnElement="fgbmclrsp">
<dc:Bounds x="560" y="150" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_02v5162_di" bpmnElement="Gateway_02v5162" isMarkerVisible="true">
<dc:Bounds x="685" y="165" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_1mqjvoq_di" bpmnElement="Gateway_1mqjvoq" isMarkerVisible="true">
<dc:Bounds x="885" y="165" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_1hod8pk_di" bpmnElement="Gateway_1hod8pk" isMarkerVisible="true">
<dc:Bounds x="485" y="165" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_071wvmh" bpmnElement="sqrsp">
<dc:Bounds x="1400" y="150" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0raodac" bpmnElement="gjjlsp">
<dc:Bounds x="970" y="150" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0brgwzg" bpmnElement="zjsp">
<dc:Bounds x="1180" y="150" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1qs4m2m" bpmnElement="Gateway_12wcfht" isMarkerVisible="true">
<dc:Bounds x="1315" y="165" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1q88hv7" bpmnElement="Gateway_0ivnwnx" isMarkerVisible="true">
<dc:Bounds x="1525" y="165" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_00s6tq2" bpmnElement="Gateway_037rogw" isMarkerVisible="true">
<dc:Bounds x="1095" y="165" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_0ndqyc9_di" bpmnElement="Flow_0ndqyc9">
<di:waypoint x="330" y="190" />
<di:waypoint x="360" y="190" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0eu6g3b_di" bpmnElement="Flow_0eu6g3b">
<di:waypoint x="735" y="190" />
<di:waypoint x="760" y="190" />
<bpmndi:BPMNLabel>
<dc:Bounds x="737" y="172" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1uaygks_di" bpmnElement="Flow_1uaygks">
<di:waypoint x="860" y="190" />
<di:waypoint x="885" y="190" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0ame206_di" bpmnElement="Flow_0ame206">
<di:waypoint x="935" y="190" />
<di:waypoint x="970" y="190" />
<bpmndi:BPMNLabel>
<dc:Bounds x="937" y="172" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1torqxs_di" bpmnElement="Flow_1torqxs">
<di:waypoint x="710" y="165" />
<di:waypoint x="710" y="100" />
<di:waypoint x="280" y="100" />
<di:waypoint x="280" y="150" />
<bpmndi:BPMNLabel>
<dc:Bounds x="599" y="82" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1e2ecjo_di" bpmnElement="Flow_1e2ecjo">
<di:waypoint x="910" y="165" />
<di:waypoint x="910" y="100" />
<di:waypoint x="280" y="100" />
<di:waypoint x="280" y="150" />
<bpmndi:BPMNLabel>
<dc:Bounds x="799" y="82" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1ko64jc_di" bpmnElement="Flow_1ko64jc">
<di:waypoint x="535" y="190" />
<di:waypoint x="560" y="190" />
<bpmndi:BPMNLabel>
<dc:Bounds x="530" y="172" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0rn2xkx_di" bpmnElement="Flow_0rn2xkx">
<di:waypoint x="660" y="190" />
<di:waypoint x="685" y="190" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0hrnklg_di" bpmnElement="Flow_0hrnklg">
<di:waypoint x="188" y="190" />
<di:waypoint x="230" y="190" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1q5o6tr_di" bpmnElement="Flow_1q5o6tr">
<di:waypoint x="460" y="190" />
<di:waypoint x="485" y="190" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1jzk2qn_di" bpmnElement="Flow_1jzk2qn">
<di:waypoint x="510" y="165" />
<di:waypoint x="510" y="100" />
<di:waypoint x="280" y="100" />
<di:waypoint x="280" y="150" />
<bpmndi:BPMNLabel>
<dc:Bounds x="385" y="82" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_04yw72g" bpmnElement="Flow_0xhpgf5">
<di:waypoint x="1365" y="190" />
<di:waypoint x="1400" y="190" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1372" y="172" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_02efbs1" bpmnElement="Flow_0j4zrgs">
<di:waypoint x="1500" y="190" />
<di:waypoint x="1525" y="190" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0n23wiu" bpmnElement="Flow_0y6f9vg">
<di:waypoint x="1070" y="190" />
<di:waypoint x="1095" y="190" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1eb3e2m" bpmnElement="Flow_1uuss1x">
<di:waypoint x="1145" y="190" />
<di:waypoint x="1180" y="190" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1152" y="172" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1hdwu40" bpmnElement="Flow_0my3hgz">
<di:waypoint x="1280" y="190" />
<di:waypoint x="1315" y="190" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0r76okg_di" bpmnElement="Flow_0r76okg">
<di:waypoint x="1575" y="190" />
<di:waypoint x="1612" y="190" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1583" y="172" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_04fjdt8_di" bpmnElement="Flow_04fjdt8">
<di:waypoint x="1120" y="165" />
<di:waypoint x="1120" y="100" />
<di:waypoint x="280" y="100" />
<di:waypoint x="280" y="150" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1009" y="82" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0u3ivmh_di" bpmnElement="Flow_0u3ivmh">
<di:waypoint x="1340" y="165" />
<di:waypoint x="1340" y="100" />
<di:waypoint x="280" y="100" />
<di:waypoint x="280" y="150" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1219" y="82" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_11hc0o0_di" bpmnElement="Flow_11hc0o0">
<di:waypoint x="1550" y="165" />
<di:waypoint x="1550" y="100" />
<di:waypoint x="280" y="100" />
<di:waypoint x="280" y="150" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1439" y="82" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>
@@ -0,0 +1,3 @@
第二行替换为:<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">
第三行修改为:isExecutable="true"
camunda: 替换为 activiti: