feat(流程): 标准解读流程发起

This commit is contained in:
yjz
2024-06-25 18:25:47 +08:00
parent 459c3ba8da
commit 3bb67a7cef
19 changed files with 461 additions and 121 deletions
@@ -13,28 +13,28 @@ public enum ProcessTypeEnum {
DEMO("测试流程",0, "com.jero.modules.activiti.process.demo.service.ProcessDemoService","/workCenter/StandardEntryOrChangeProcess","/workCenter/StandardEntryOrChangeProcess"),
FB_ENTRY_CHANGE("标准法规入库/变更流程",1, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbEntryChangeServiceImpl","/workCenter/StandardEntryOrChangeProcess","/workCenter/StandardEntryOrChangeProcess"),
FB_STANDARD_CONSULTATION("标准征求意见流程",2, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbStandardConsultationServiceImpl","/workCenter/StandardConsultationProcess","/workCenter/StandardConsultationProcess"),
PROJECT_ASSESS("项目合规评估流程",3, "com.jero.modules.activiti.process.projectassess.service.ProcessProjectAssessService","/workCenter/ProjectComplianceEvaluationProcess","/workCenter/ProjectComplianceEvaluationProcess"),
PROJECT_NOT_MET("未符合项跟踪流程",4, "com.jero.modules.activiti.process.projectnotmet.service.ProcessProjectNotMetService","/workCenter/NoMatchTrackingProcess","/workCenter/NoMatchTrackingProcess"),
PROJECT_STANDARD("法规合规评估流程",5, "com.jero.modules.activiti.process.projectstandard.service.ProcessProjectStandardService","/workCenter/StandardComplianceProcess","/workCenter/StandardComplianceProcess"),
FB_STANDARD_PURCHASE("法规采购流程",6, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbStandardPurchaseServiceImpl","/workCenter/StandardProcurementProcess","/workCenter/StandardProcurementProcess"),
ES_INIT_CHANGE("企标立项/变更计划",7, "com.jero.modules.activiti.process.esInitChange.service.impl.ProcessEsInitChangeServiceImpl","/workCenter/enterpriseStandardInitChange/planApprovalChangeFlow","/workCenter/enterpriseStandardInitChange"),
ES_ANNUAL_REPORT("年度制修订计划审批流程(各部门主动上报)",8, "com.jero.modules.activiti.process.esAbolish.service.impl.ProcessEsAbolishServiceImpl","/workCenter/annualRevisionPlanActivelyReport/revisionPlanActivelyReportFlow","/workCenter/annualRevisionPlanActivelyReport"),
ES_ANNUAL_INIT("年度制修订计划审批流程(标准化发起)",9, "com.jero.modules.activiti.process.esAnnualReport.service.impl.ProcessEsAnnualReportServiceImpl","/workCenter/annualRevisionPlanStandardizationInit/revisionPlanStandardizationInitFlow","/workCenter/annualRevisionPlanStandardizationInit"),
ES_REVISION("企标制修订流程(草案编写/征求意见/报批)", 10, "com.jero.modules.activiti.process.esRevision.service.impl.EsRevisionServiceImpl","/workCenter/enterpriseStandardRevision/enterpriseStandardRevisionFlow","/workCenter/enterpriseStandardRevision"),
ES_CHANGE("企标更改流程",11, "com.jero.modules.activiti.process.esChange.service.impl.ProcessEsChangeServiceImpl","/workCenter/enterpriseStandardChange/enterpriseStandardChangeFlow","/workCenter/enterpriseStandardChange/enterpriseStandardChangeFlow"),
ES_RECHECK("企标复审流程",12, "com.jero.modules.activiti.process.esRecheck.service.impl.ProcessEsRecheckServiceImpl","/workCenter/enterpriseStandardRecheck/enterpriseStandardRecheckFlow","/workCenter/enterpriseStandardRecheck"),
ES_ABOLISH("企标废止流程",13, "com.jero.modules.activiti.process.esAbolish.service.impl.ProcessEsAbolishServiceImpl","/workCenter/enterpriseStandardAnnul/enterpriseStandardAnnulFlow","/workCenter/enterpriseStandardAnnul"),
ES_ARCHIVE("企标封存流程",14, "com.jero.modules.activiti.process.esArchive.service.impl.ProcessEsArchiveServiceImpl","/workCenter/enterpriseStandardSealSave/enterpriseStandardSealSaveFlow","/workCenter/enterpriseStandardSealSave"),
ES_ENABLE("已封存企标启用流程",15, "com.jero.modules.activiti.process.esEnable.service.impl.ProcessEsEnableServiceImpl","/workCenter/enterpriseStandardStartUse/enterpriseStandardStartUseFlow","/workCenter/enterpriseStandardStartUse"),
ES_INSPECT_PLAN("企标稽查计划", 16, "com.jero.modules.activiti.process.esinspectplan.service.impl.EsInspectPlanFlow","/workCenter/EnterpriseStandardInspectionPlan","/workCenter/EnterpriseStandardInspectionPlan"),
ES_INSPECT("企标稽查流程", 17, "com.jero.modules.activiti.process.esinspect.service.impl.EsInspectFlow","/workCenter/EnterpriseStandardInspectionProcess","/workCenter/EnterpriseStandardInspectionProcess"),
ES_INSPECT_DELAY_APPLY("稽查延期申请流程", 18, "com.jero.modules.activiti.process.esinspectdelayapply.service.impl.EsInspectDelayApplyFlow","/workCenter/InspectionExtensionRequestProcess","/workCenter/InspectionExtensionRequestProcess"),
ES_INSPECT_REPORT("企标稽查整改", 19, "com.jero.modules.activiti.process.esinspectrectify.service.impl.EsInspectRectifyFlow","/workCenter/EnterpriseStandardInspectionRectification","/workCenter/EnterpriseStandardInspectionRectification"),
PERMISSION_APPLY_PROCESS("权限申请流程", 20, "com.jero.modules.activiti.process.espermissionapply.service.impl.EsPermissionApplyFlow","/workCenter/PermissionApplicationProcess","/workCenter/PermissionApplicationProcess"),
STANDARD_DECLARE("标准宣贯流程", 21, "com.jero.modules.activiti.process.esdeclare.service.impl.EsDeclareFlow","/workCenter/StandardPromotionProcess","/noMobile"),
MEETING_MANAGE("会后管理流程", 22, "com.jero.modules.activiti.process.meetingmanage.service.impl.MeetingManageFlow","/workCenter/PostMeetingManageProcess","/noMobile")
FB_ENTRY_CHANGE("标准法规入库/变更流程",1, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbEntryChangeServiceImpl","/workCenter/StandardEntryOrChangeProcess","/workCenter/StandardEntryOrChangeProcess"),
FB_STANDARD_CONSULTATION("标准征求意见流程",2, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbStandardConsultationServiceImpl","/workCenter/StandardConsultationProcess","/workCenter/StandardConsultationProcess"),
PROJECT_ASSESS("项目合规评估流程",3, "com.jero.modules.activiti.process.projectassess.service.ProcessProjectAssessService","/workCenter/ProjectComplianceEvaluationProcess","/workCenter/ProjectComplianceEvaluationProcess"),
PROJECT_NOT_MET("未符合项跟踪流程",4, "com.jero.modules.activiti.process.projectnotmet.service.ProcessProjectNotMetService","/workCenter/NoMatchTrackingProcess","/workCenter/NoMatchTrackingProcess"),
PROJECT_STANDARD("法规合规评估流程",5, "com.jero.modules.activiti.process.projectstandard.service.ProcessProjectStandardService","/workCenter/StandardComplianceProcess","/workCenter/StandardComplianceProcess"),
FB_STANDARD_PURCHASE("法规采购流程",6, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbStandardPurchaseServiceImpl","/workCenter/StandardProcurementProcess","/workCenter/StandardProcurementProcess"),
ES_INIT_CHANGE("企标立项/变更计划",7, "com.jero.modules.activiti.process.esInitChange.service.impl.ProcessEsInitChangeServiceImpl","/workCenter/enterpriseStandardInitChange/planApprovalChangeFlow","/workCenter/enterpriseStandardInitChange"),
ES_ANNUAL_REPORT("年度制修订计划审批流程(各部门主动上报)",8, "com.jero.modules.activiti.process.esAbolish.service.impl.ProcessEsAbolishServiceImpl","/workCenter/annualRevisionPlanActivelyReport/revisionPlanActivelyReportFlow","/workCenter/annualRevisionPlanActivelyReport"),
ES_ANNUAL_INIT("年度制修订计划审批流程(标准化发起)",9, "com.jero.modules.activiti.process.esAnnualReport.service.impl.ProcessEsAnnualReportServiceImpl","/workCenter/annualRevisionPlanStandardizationInit/revisionPlanStandardizationInitFlow","/workCenter/annualRevisionPlanStandardizationInit"),
ES_REVISION("企标制修订流程(草案编写/征求意见/报批)", 10, "com.jero.modules.activiti.process.esRevision.service.impl.EsRevisionServiceImpl","/workCenter/enterpriseStandardRevision/enterpriseStandardRevisionFlow","/workCenter/enterpriseStandardRevision"),
ES_CHANGE("企标更改流程",11, "com.jero.modules.activiti.process.esChange.service.impl.ProcessEsChangeServiceImpl","/workCenter/enterpriseStandardChange/enterpriseStandardChangeFlow","/workCenter/enterpriseStandardChange/enterpriseStandardChangeFlow"),
ES_RECHECK("企标复审流程",12, "com.jero.modules.activiti.process.esRecheck.service.impl.ProcessEsRecheckServiceImpl","/workCenter/enterpriseStandardRecheck/enterpriseStandardRecheckFlow","/workCenter/enterpriseStandardRecheck"),
ES_ABOLISH("企标废止流程",13, "com.jero.modules.activiti.process.esAbolish.service.impl.ProcessEsAbolishServiceImpl","/workCenter/enterpriseStandardAnnul/enterpriseStandardAnnulFlow","/workCenter/enterpriseStandardAnnul"),
ES_ARCHIVE("企标封存流程",14, "com.jero.modules.activiti.process.esArchive.service.impl.ProcessEsArchiveServiceImpl","/workCenter/enterpriseStandardSealSave/enterpriseStandardSealSaveFlow","/workCenter/enterpriseStandardSealSave"),
ES_ENABLE("已封存企标启用流程",15, "com.jero.modules.activiti.process.esEnable.service.impl.ProcessEsEnableServiceImpl","/workCenter/enterpriseStandardStartUse/enterpriseStandardStartUseFlow","/workCenter/enterpriseStandardStartUse"),
ES_INSPECT_PLAN("企标稽查计划", 16, "com.jero.modules.activiti.process.esinspectplan.service.impl.EsInspectPlanFlow","/workCenter/EnterpriseStandardInspectionPlan","/workCenter/EnterpriseStandardInspectionPlan"),
ES_INSPECT("企标稽查流程", 17, "com.jero.modules.activiti.process.esinspect.service.impl.EsInspectFlow","/workCenter/EnterpriseStandardInspectionProcess","/workCenter/EnterpriseStandardInspectionProcess"),
ES_INSPECT_DELAY_APPLY("稽查延期申请流程", 18, "com.jero.modules.activiti.process.esinspectdelayapply.service.impl.EsInspectDelayApplyFlow","/workCenter/InspectionExtensionRequestProcess","/workCenter/InspectionExtensionRequestProcess"),
ES_INSPECT_REPORT("企标稽查整改", 19, "com.jero.modules.activiti.process.esinspectrectify.service.impl.EsInspectRectifyFlow","/workCenter/EnterpriseStandardInspectionRectification","/workCenter/EnterpriseStandardInspectionRectification"),
PERMISSION_APPLY_PROCESS("权限申请流程", 20, "com.jero.modules.activiti.process.espermissionapply.service.impl.EsPermissionApplyFlow","/workCenter/PermissionApplicationProcess","/workCenter/PermissionApplicationProcess"),
STANDARD_DECLARE("标准宣贯流程", 21, "com.jero.modules.activiti.process.esdeclare.service.impl.EsDeclareFlow","/workCenter/StandardPromotionProcess","/noMobile"),
MEETING_MANAGE("会后管理流程", 22, "com.jero.modules.activiti.process.meetingmanage.service.impl.MeetingManageFlow","/workCenter/PostMeetingManageProcess","/noMobile")
;
private String name;
@@ -11,26 +11,7 @@ import lombok.Getter;
@Getter
public enum ProcessType {
/**
* 企标立项变更
*/
ES_INIT_CHANGE("企标立项/变更计划", "1", "es-init-change", "processEsInitChangeServiceImpl"),
ES_ANNUAL_REPORT("年度制修订-各部门主动上报", "2", "es-annual-report", "processEsAnnualReportServiceImpl"),
ES_ANNUAL_INIT("年度制修订-标准化部门主动发起", "3", "es-annual-init", "processEsAnnualInitServiceImpl"),
FB_ENTRY_CHANGE("标准法规入库/变更流程", "4", "fb-entry-change", "ProcessFbEntryChangeServiceImpl"),
ES_ABOLISH("企标废止流程", "5", "es-abolish", "ProcessEsAbolishServiceImpl"),
ES_ARCHIVE("企标封存流程", "6", "es-archive", "ProcessEsArchiveServiceImpl"),
ES_CHANGE("企标变更流程", "7", "es-change", "ProcessEsChangeServiceImpl"),
ES_RECHECK("企标复审流程", "8", "es-recheck", "ProcessEsRecheckServiceImpl"),
ES_ENABLE("已封存企标启用流程", "9", "es-enable", "ProcessEsEnableServiceImpl"),
ES_REVISION("企标制修订流程", "10", "es-revision", "ProcessEsRevisionServiceImpl"),
ES_INSPECT_PLAN("企标稽查计划", "16", "inspect_plan", "ProcessEsInspectPlanServiceImpl"),
ES_INSPECT("企标稽查流程", "17", "inspect_process", "ProcessEsInspectServiceImpl"),
ES_INSPECT_DELAY_APPLY("稽查延期申请流程", "18", "inspect_delay_apply_process", "ProcessEsInspectDelayApplyServiceImpl"),
ES_INSPECT_REPORT("企标稽查整改", "19", "inspect_report", "ProcessEsInspectReportServiceImpl"),
PERMISSION_APPLY_PROCESS("权限申请流程", "20", "permission_apply_process", "ProcessEsPermissionApplyServiceImpl"),
STANDARD_DECLARE("标准宣贯流程", "21", "standard_declare", "ProcessEsDeclareServiceImpl"),
MEETING_MANAGE("会后管理流程", "22", "meeting_manage", "ProcessMeetingManageServiceImpl")
STANDARD_INTERPRET("标准解读流程", "2", "standard_interpret", "StandardInterpretFlowServiceImpl"),
;
private final String name;
@@ -1,5 +1,20 @@
package com.jero.modules.activiti.process.common.utility;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.jero.common.exception.JeroBootException;
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.FinishFlagEnum;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import lombok.RequiredArgsConstructor;
import org.apache.shiro.SecurityUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -11,26 +26,52 @@ import java.util.stream.Collectors;
* @Date: 2024-06-24 16:08
* @Version: 1.0
**/
@RequiredArgsConstructor
@Transactional(rollbackFor = {Exception.class, JeroBootException.class})
@Component
public class FlowUtility {
private final ProcessAllService processAllService;
private final ProcessApprovalRecordService processApprovalRecordService;
public void flowApprovalUpdate(ProcessAll processAll, ProcessApprovalRecord processApprovalRecord){
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// 更新流程总表信息
processAllService.updateById(processAll);
// 更新流程审批信息
processApprovalRecordService.update(
new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getUserId, loginUser.getId())
.eq(ProcessApprovalRecord::getTaskId, processAll.getTaskId())
.set(StringUtils.isNotBlank(processApprovalRecord.getCommitText()),
ProcessApprovalRecord::getCommitText, processApprovalRecord.getCommitText())
.set(ProcessApprovalRecord::getCommitFlag, processApprovalRecord.getCommitFlag())
.set(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.COMPLETE.getValue())
.set(ProcessApprovalRecord::getCommitFile, processApprovalRecord.getCommitFile())
.set(ProcessApprovalRecord::getEndTime, new Date()));
}
/**
* 将Map中值为List类型的元素转换为以逗号分隔的字符串。
* 这个方法遍历输入的Map,如果发现任何值是List类型,则将这个List转换为一个以逗号分隔的字符串
* 这样做可以简化Map的表示,尤其是当List中包含许多元素时
* 这样做的目的是为了简化Map的表示,尤其是当List中包含多个元素时
* 对于非List类型的值,直接保留原样
*
* @param map 原始的Map,可能包含值为List类型的元素。
* @return 返回一个新的Map,其中所有值为List类型的元素都被转换为字符串。
* @return 返回一个新的Map,其中所有值为List类型的元素都被转换为以逗号分隔的字符串。
*/
public static Map<String, Object> listToString(Map<String, Object> map) {
// 使用流式编程来处理Map的每个条目
return map.entrySet().stream().map(v -> {
// 检查当前条目的值是否为List类型
// 使用Stream API对原始Map进行处理
Map<String, Object> stringObjectHashMap = map.entrySet().stream().map(v -> {
// 检查当前元素的值是否为List类型
if (v.getValue() instanceof List) {
// 如果是List类型,则将其转换为以逗号分隔的字符串
// List类型的值转换为以逗号分隔的字符串
v.setValue(String.join(",", (List<String>) v.getValue()));
}
// 返回转换后的条目
// 返回转换后的Map.Entry对象
return v;
}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
// 返回转换后的Map
return stringObjectHashMap;
}
}
@@ -0,0 +1,111 @@
package com.jero.modules.activiti.process.standardinterpret.common;
/**
* @ClassName: standardInterpret
* @Description:
* @Author: yjz
* @Date: 2024-06-24 15:08
* @Version: 1.0
**/
public class StandardInterpretCommon {
private StandardInterpretCommon(){
}
/**
* 标准解读流程key
*/
public static final String KEY = "standard_interpret";
/**
* 法规工程师发起
*/
public static final String REGULATORY_ENGINEER_START = "regulatory_engineer_start";
/**
* 主控部门联络人分发
*/
public static final String CONTACT_PERSON_DISTRIBUTE = "contact_person_distribute";
/**
* 标准主解读人分发
*/
public static final String MASTER_INTERPRET_DISTRIBUTE = "master_interpret_distribute";
/**
* 解读人填写信息(分发)
*/
public static final String INTERPRETING_PEOPLE_FILLOUT = "interpreting_people_fillout";
/**
* 标准主解读人填写解读信息(不分发)
*/
public static final String MASTER_INTERPRET_FILLOUT = "master_interpret_fillout";
/**
* 标准主解读人审核(分发)
*/
public static final String MASTER_INTERPRET_APPROVE = "master_interpret_approve";
/**
* 标准主解读汇总(分发)
*/
public static final String MASTER_INTERPRET_SUMMARY = "master_interpret_summary";
/**
* 会签(分发)
*/
public static final String JOINTLY_SIGN_1 = "jointly_sign_1";
/**
* 会签(不分发)
*/
public static final String JOINTLY_SIGN_2 = "jointly_sign_2";
/**
* 各涉及部门科室经理审核(分发)
*/
public static final String DEPARTMENT_MANAGER_APPROVE_1 = "department_manager_approve_1";
/**
* 各涉及部门科室经理审核(不分发)
*/
public static final String DEPARTMENT_MANAGER_APPROVE_2 = "department_manager_approve_2";
/**
* 主控部门高级经理/法规认证技术管批准(分发)
*/
public static final String TECHNICAL_OFFICER_APPROVAL_1 = "technical_officer_approval_1";
/**
* 主控部门高级经理/法规认证技术管批准(不分发)
*/
public static final String TECHNICAL_OFFICER_APPROVAL_2 = "technical_officer_approval_2";
/**
* 法规工程师
*/
public static final String REGULATORY_ENGINEER = "regulatoryEngineer";
/**
* 主控部门联络人
*/
public static final String CONTACT_PERSON = "contactPerson";
/**
* 标准主解读人
*/
public static final String MASTER_INTERPRET = "masterInterpret";
/**
* 解读人
*/
public static final String INTERPRETING_PEOPLE = "interpretingPeople";
/**
* 部门科室经理
*/
public static final String DEPARTMENT_MANAGER = "departmentManager";
/**
* 技术官
*/
public static final String TECHNICAL_OFFICER = "technicalOfficer";
/**
* 标准主解读人分发 自动任务
*/
public static final String AUTO_TASK_1 = "autoTask_1";
/**
* 子解读人填写信息 自动任务
*/
public static final String AUTO_TASK_2 = "autoTask_2";
/**
* 主解读重新分发 自动任务
*/
public static final String AUTO_TASK_3 = "autoTask_3";
}
@@ -1,19 +0,0 @@
package com.jero.modules.activiti.process.standardinterpret.common;
/**
* @ClassName: standardInterpret
* @Description:
* @Author: yjz
* @Date: 2024-06-24 15:08
* @Version: 1.0
**/
public class standardInterpret {
private standardInterpret(){
}
/**
* 标准解读流程key
*/
public static final String KEY = "standard_interpret";
}
@@ -15,6 +15,6 @@ import org.springframework.web.bind.annotation.RestController;
@RequiredArgsConstructor
public class ProcessStandardInterpretClauseController {
private ProcessStandardInterpretClauseService processStandardInterpretClauseService;
private final ProcessStandardInterpretClauseService processStandardInterpretClauseService;
}
@@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
@RequiredArgsConstructor
public class ProcessStandardInterpretClauseSublistController {
private ProcessStandardInterpretClauseSublistService processStandardInterpretClauseSublistService;
private final ProcessStandardInterpretClauseSublistService processStandardInterpretClauseSublistService;
}
@@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
@RestController("/processStandardInterpret")
public class ProcessStandardInterpretController {
private ProcessStandardInterpretService processStandardInterpretService;
private final ProcessStandardInterpretService processStandardInterpretService;
}
@@ -12,9 +12,14 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.task.Task;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.bind.annotation.*;
import java.text.ParseException;
import java.util.List;
import java.util.Map;
/**
* @ClassName: 标准解读流程
* @Description:
@@ -29,7 +34,7 @@ import org.springframework.web.bind.annotation.*;
@RequestMapping("/process/standardInterpretFlow")
public class StandardInterpretFlowController {
private StandardInterpretFlowService standardInterpretFlowService;
private final StandardInterpretFlowService standardInterpretFlowService;
/**
* 标准解读流程-生成项目id
@@ -44,7 +49,7 @@ public class StandardInterpretFlowController {
/**
* 标准解读流程-流程发起
* @param standardInterpretFlowDTO 企标稽查计划流程VO对象
* @param standardInterpretFlowDTO 标准解读流程对象
* @return 结果对象
*/
@AutoLog(value = "标准解读流程-流程发起")
@@ -54,4 +59,40 @@ public class StandardInterpretFlowController {
standardInterpretFlowService.flowStart(standardInterpretFlowDTO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 标准解读流程-流程审批
* @param standardInterpretFlowDTO 标准解读流程对象
* @return 结果对象
*/
@AutoLog(value = "企标稽查整改-流程审批")
@ApiOperation(value="企标稽查整改-流程审批", notes="企标稽查整改-流程审批")
@PostMapping(value = "/flowApproval")
public Result<T> flowApproval(@RequestBody StandardInterpretFlowDTO standardInterpretFlowDTO) {
standardInterpretFlowService.flowApproval(standardInterpretFlowDTO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 标准解读流程-生成项目id
* @return 项目id
*/
@AutoLog(value = "标准解读流程-demo", operateType = CommonConstant.OPERATE_TYPE_1)
@ApiOperation(value="标准解读流程-demo", notes="标准解读流程-demo")
@PostMapping(value = "/demo")
public String demo(@RequestBody Map<String, Object> map) {
standardInterpretFlowService.demo(map);
return "1";
}
/**
* 标准解读流程-生成项目id
* @return 项目id
*/
@AutoLog(value = "标准解读流程-getTaskId", operateType = CommonConstant.OPERATE_TYPE_1)
@ApiOperation(value="标准解读流程-getTaskId", notes="标准解读流程-getTaskId")
@PostMapping(value = "/getTaskId")
public List<Task> demo(String processInstanceId) {
return standardInterpretFlowService.getTaskId(processInstanceId);
}
}
@@ -2,6 +2,7 @@ package com.jero.modules.activiti.process.standardinterpret.dto;
import com.jero.modules.activiti.process.standardinterpret.entity.ProcessStandardInterpret;
import com.jero.modules.activiti.process.standardinterpret.entity.ProcessStandardInterpretClause;
import com.jero.modules.activiti.process.standardinterpret.entity.ProcessStandardInterpretClauseSublist;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -24,4 +25,8 @@ public class StandardInterpretDTO implements Serializable {
/**标准解读流程_条款中间表*/
@ApiModelProperty(value = "标准解读流程_条款中间表")
private List<ProcessStandardInterpretClause> processStandardInterpretClauseList;
/**标准解读流程_条款中间表*/
@ApiModelProperty(value = "标准解读流程_条款中间表_子表")
private List<ProcessStandardInterpretClauseSublist> processStandardInterpretClauseSublistList;
}
@@ -5,7 +5,6 @@ import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Map;
/**
@@ -16,7 +15,7 @@ import java.util.Map;
* @Version: 1.0
**/
@Data
public class StandardInterpretFlowDTO implements Serializable {
public class StandardInterpretFlowDTO {
/**流程信息*/
@ApiModelProperty(value = "流程信息")
@@ -4,6 +4,7 @@ package com.jero.modules.activiti.process.standardinterpret.entity;
import com.jero.modules.laws.documenttool.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 标准解读流程(ProcessStandardInterpret)表实体类
@@ -11,6 +12,7 @@ import lombok.Data;
* @author makejava
* @since 2024-06-24 14:41:18
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class ProcessStandardInterpret extends BaseEntity {
/**主解读人*/
@@ -4,6 +4,7 @@ package com.jero.modules.activiti.process.standardinterpret.entity;
import com.jero.modules.laws.documenttool.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 标准解读流程_条款中间表(ProcessStandardInterpretClause)表实体类
@@ -11,6 +12,7 @@ import lombok.Data;
* @author makejava
* @since 2024-06-24 14:46:07
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class ProcessStandardInterpretClause extends BaseEntity {
/**标准解读流程id*/
@@ -1,7 +1,7 @@
package com.jero.modules.activiti.process.standardinterpret.entity;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.jero.modules.laws.documenttool.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -12,7 +12,7 @@ import lombok.Data;
* @since 2024-06-24 14:47:59
*/
@Data
public class ProcessStandardInterpretClauseSublist extends Model<ProcessStandardInterpretClauseSublist> {
public class ProcessStandardInterpretClauseSublist extends BaseEntity {
/**标准解读流程_条款中间表id*/
@ApiModelProperty(value = "标准解读流程_条款中间表id")
private String standardInterpretClauseId;
@@ -0,0 +1,22 @@
package com.jero.modules.activiti.process.standardinterpret.listener;
import com.jero.common.util.SpringContextUtils;
import com.jero.modules.activiti.process.standardinterpret.service.StandardInterpretFlowService;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
/**
* @ClassName: StandardInterpretFlowListener
* @Description:
* @Author: yjz
* @Date: 2024-06-25 10:20
* @Version: 1.0
**/
public class StandardInterpretFlowListener implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
StandardInterpretFlowService standardInterpretFlowService =
SpringContextUtils.getBean(StandardInterpretFlowService.class);
standardInterpretFlowService.flowListener(delegateTask);
}
}
@@ -1,6 +1,11 @@
package com.jero.modules.activiti.process.standardinterpret.service;
import com.jero.modules.activiti.process.standardinterpret.dto.StandardInterpretFlowDTO;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.task.Task;
import java.util.List;
import java.util.Map;
/**
* @InterfaceName: StandardInterpretFlowServicce
@@ -11,8 +16,24 @@ import com.jero.modules.activiti.process.standardinterpret.dto.StandardInterpret
**/
public interface StandardInterpretFlowService {
/**
* standardInterpretFlowDTO
* 流程发起
* @param standardInterpretFlowDTO
*/
void flowStart(StandardInterpretFlowDTO standardInterpretFlowDTO);
/**
* 流程审批
* @param standardInterpretFlowDTO
*/
void flowApproval(StandardInterpretFlowDTO standardInterpretFlowDTO);
/**
* 流程监听
* @param delegateTask
*/
void flowListener(DelegateTask delegateTask);
void demo(Map<String, Object> map);
List<Task> getTaskId(String processInstanceId);
}
@@ -3,21 +3,28 @@ package com.jero.modules.activiti.process.standardinterpret.service.impl;
import cn.hutool.core.date.DatePattern;
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.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.SnowflakeUtils;
import com.jero.modules.activiti.common.ActivitiCommon;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessStatusEnum;
import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.utility.FlowUtility;
import com.jero.modules.activiti.process.standardinterpret.common.standardInterpret;
import com.jero.modules.activiti.process.demo.common.ProcessDemoCommon;
import com.jero.modules.activiti.process.standardinterpret.common.StandardInterpretCommon;
import com.jero.modules.activiti.process.standardinterpret.dto.StandardInterpretDTO;
import com.jero.modules.activiti.process.standardinterpret.dto.StandardInterpretFlowDTO;
import com.jero.modules.activiti.process.standardinterpret.entity.ProcessStandardInterpret;
import com.jero.modules.activiti.process.standardinterpret.entity.ProcessStandardInterpretClause;
import com.jero.modules.activiti.process.standardinterpret.entity.ProcessStandardInterpretClauseSublist;
import com.jero.modules.activiti.process.standardinterpret.service.ProcessStandardInterpretClauseService;
import com.jero.modules.activiti.process.standardinterpret.service.ProcessStandardInterpretClauseSublistService;
import com.jero.modules.activiti.process.standardinterpret.service.ProcessStandardInterpretService;
import com.jero.modules.activiti.process.standardinterpret.service.StandardInterpretFlowService;
import com.jero.modules.activiti.service.ProcessAllService;
@@ -25,16 +32,18 @@ import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.shiro.SecurityUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
* @ClassName: StandardInterpretFlowServiceImpl
@@ -46,19 +55,21 @@ import java.util.Map;
@Service
@Slf4j
@RequiredArgsConstructor
@Transactional(rollbackFor = {Exception.class,JeroBootException.class})
public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowService {
private RuntimeService runtimeService;
private TaskService taskService;
private ProcessAllService processAllService;
private ProcessApprovalRecordService processApprovalRecordService;
private ProcessNodeLinkService processNodeLinkService;
private ProcessStandardInterpretService processStandardInterpretService;
private ProcessStandardInterpretClauseService processStandardInterpretClauseService;
private final FlowUtility flowUtility;
private final RuntimeService runtimeService;
private final TaskService taskService;
private final ProcessAllService processAllService;
private final ProcessApprovalRecordService processApprovalRecordService;
private final ProcessNodeLinkService processNodeLinkService;
private final ProcessStandardInterpretService processStandardInterpretService;
private final ProcessStandardInterpretClauseService processStandardInterpretClauseService;
private final ProcessStandardInterpretClauseSublistService processStandardInterpretClauseSublistService;
@Override
public void flowStart(StandardInterpretFlowDTO standardInterpretFlowDTO) {
log.info("标准解读流程-流程发起 开始");
// 流程信息
ProcessAll processAll = standardInterpretFlowDTO.getProcessAll();
// 流程审批信息
@@ -67,50 +78,175 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe
Map<String, Object> map = standardInterpretFlowDTO.getMap();
// 根据流程key启动流程,设置流程变量,更新流程总表信息,更新流程审批信息,返回任务信息
Task task = startProcessInstanceByKey(standardInterpret.KEY, map, processAll, processApprovalRecord);
Task task = startProcessInstanceByKey(StandardInterpretCommon.KEY, map, processAll, processApprovalRecord);
// 处理业务信息
handleBusinessData(standardInterpretFlowDTO);
// 自动完成第一个节点
taskService.complete(task.getId());
log.info("标准解读流程-流程发起 结束");
}
@Override
public void flowApproval(StandardInterpretFlowDTO standardInterpretFlowDTO) {
// 流程信息
ProcessAll processAll = standardInterpretFlowDTO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = standardInterpretFlowDTO.getProcessApprovalRecord();
// map(参数)
Map<String, Object> map = standardInterpretFlowDTO.getMap();
// 更新流程总表信息,更新流程审批信息
flowUtility.flowApprovalUpdate(processAll, processApprovalRecord);
// 完成任务
taskService.complete(processAll.getTaskId(), map);
}
@Override
public void flowListener(DelegateTask delegateTask) {
log.info("标准解读流程-流程监听器 开始");
String taskId = delegateTask.getId();
String taskDefinitionKey = delegateTask.getTaskDefinitionKey();
String processInstanceId = delegateTask.getProcessInstanceId();
Map<String, Object> userInfoMap = new HashMap<>();
// 获取 当前流程实例id
String mainInstanceId =(String) delegateTask.getVariable(ActivitiCommon.MAIN_INSTANCE_ID);
//保存父子关联信息
Map<String, Object> variables = new HashMap<>();
variables.put(ActivitiCommon.MAIN_INSTANCE_ID, mainInstanceId != null ? mainInstanceId : processInstanceId);
variables.put(ActivitiCommon.PARENT_TASK_ID, taskId);
if (StandardInterpretCommon.AUTO_TASK_1.equals(taskDefinitionKey)
|| StandardInterpretCommon.AUTO_TASK_3.equals(taskDefinitionKey)) {
// 获取子解读人
List<String> interpretingPeopleList =
(List<String>) delegateTask.getVariable(StandardInterpretCommon.INTERPRETING_PEOPLE);
for (String interpretingPeople : interpretingPeopleList) {
// 循环发起 标准解读流程(主解读重新分发子流程)
userInfoMap.put(ProcessDemoCommon.INTERPRETER, interpretingPeople);
log.info("循环发起 标准解读流程(主解读人重新分发子流程)");
}
}else if (StandardInterpretCommon.AUTO_TASK_2.equals(taskDefinitionKey)){
// 获取 标准主解读人
String masterInterpret = (String) delegateTask.getVariable(StandardInterpretCommon.MASTER_INTERPRET);
userInfoMap.put(StandardInterpretCommon.MASTER_INTERPRET, masterInterpret);
log.info("发起 标准解读流程(子解读人流程)");
}else if (StandardInterpretCommon.MASTER_INTERPRET_SUMMARY.equals(taskDefinitionKey)){
// 标准主解读汇总 合并条款
}
log.info("标准解读流程-流程监听器 结束");
}
@Override
public void demo(Map<String, Object> map) {
// 完成任务
taskService.complete((String) map.get("taskId"), map);
}
@Override
public List<Task> getTaskId(String processInstanceId) {
TaskService taskService = ProcessEngines.getDefaultProcessEngine().getTaskService();
return taskService.createTaskQuery()
.processInstanceId(processInstanceId)
.list();
}
private void handleBusinessData(StandardInterpretFlowDTO standardInterpretFlowDTO) {
StandardInterpretDTO data = standardInterpretFlowDTO.getData();
// 标准解读流程
ProcessStandardInterpret processStandardInterpret = data.getProcessStandardInterpret();
processStandardInterpretService.saveOrUpdate(processStandardInterpret);
String standardInterpretId = processStandardInterpret.getId();
// 标准解读流程_条款中间表
List<ProcessStandardInterpretClause> processStandardInterpretClauseList =
data.getProcessStandardInterpretClauseList();
for (ProcessStandardInterpretClause processStandardInterpretClause : processStandardInterpretClauseList) {
processStandardInterpretClause.setId(String.valueOf(SnowflakeUtils.snowflake()));
processStandardInterpretClause.setStandardInterpretId(processStandardInterpret.getId());
// 标准解读流程_条款中间表_子表
List<ProcessStandardInterpretClauseSublist> processStandardInterpretClauseSublistList =
data.getProcessStandardInterpretClauseSublistList();
// 当前任务节点
String node = standardInterpretFlowDTO.getProcessApprovalRecord().getNodeId();
switch (node){
// 法规工程师发起
case StandardInterpretCommon.REGULATORY_ENGINEER_START:
processStandardInterpretService.saveOrUpdate(processStandardInterpret);
for (ProcessStandardInterpretClause standardInterpretClause : processStandardInterpretClauseList) {
standardInterpretClause.setId(String.valueOf(SnowflakeUtils.snowflake()));
standardInterpretClause.setDecompositionSource(processStandardInterpret.getDecompositionSource());
standardInterpretClause.setStandardInterpretId(standardInterpretId);
}
processStandardInterpretClauseService.saveOrUpdateBatch(processStandardInterpretClauseList);
break;
// 主控部门联络人分发
case StandardInterpretCommon.CONTACT_PERSON_DISTRIBUTE:
List<String> clauseIdList = processStandardInterpretClauseList.stream()
.map(ProcessStandardInterpretClause::getId)
.collect(Collectors.toList());
// 删除旧数据
LambdaQueryWrapper<ProcessStandardInterpretClause> removeQueryWrapper = new LambdaQueryWrapper<>();
removeQueryWrapper.notIn(ProcessStandardInterpretClause::getStandardInterpretId, clauseIdList);
removeQueryWrapper.eq(ProcessStandardInterpretClause::getStandardInterpretId, standardInterpretId);
processStandardInterpretClauseService.remove(removeQueryWrapper);
break;
// 标准主解读人分发
case StandardInterpretCommon.MASTER_INTERPRET_DISTRIBUTE:
if (YesOrNoEnum.YES.getValue().equals(processStandardInterpret.getIsDistribute())){
// 分发
// 更新 标准解读流程_条款中间表
processStandardInterpretClauseService.saveOrUpdateBatch(processStandardInterpretClauseList);
// 生成 标准解读流程_条款中间表_子表 数据
List<ProcessStandardInterpretClauseSublist> processStandardInterpretClauseSublists =
new ArrayList<>();
for (ProcessStandardInterpretClause StandardInterpretClause : processStandardInterpretClauseList) {
// 子解读人
String[] interpretPersonIds = StandardInterpretClause.getInterpretPersonIds().split(",");
for (String interpretPersonId : interpretPersonIds) {
ProcessStandardInterpretClauseSublist clauseSublist =
new ProcessStandardInterpretClauseSublist();
clauseSublist.setStandardInterpretClauseId(StandardInterpretClause.getId());
clauseSublist.setClauseId(StandardInterpretClause.getClauseId());
clauseSublist.setInterpretPersonId(interpretPersonId);
processStandardInterpretClauseSublists.add(clauseSublist);
}
}
processStandardInterpretClauseSublistService.saveBatch(processStandardInterpretClauseSublists);
}else {
// 不分发
processStandardInterpretClauseSublistService
.saveOrUpdateBatch(processStandardInterpretClauseSublistList);
}
break;
default:
processStandardInterpretClauseSublistService
.saveOrUpdateBatch(processStandardInterpretClauseSublistList);
break;
}
processStandardInterpretClauseService.saveOrUpdateBatch(processStandardInterpretClauseList);
}
private Task startProcessInstanceByKey(String key, Map<String, Object> map, ProcessAll processAll,
ProcessApprovalRecord processApprovalRecord) {
// 启动流程
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey(key);
.startProcessInstanceByKey(key, map);
// 设置流程变量
runtimeService.setVariables(processInstance.getId(), map);
// 更新流程总表信息
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT_REPORT.getValue()));
DateTime date = DateUtil.date();
processAll.setPrcNum(DateUtil.format(date, DatePattern.PURE_DATETIME_MS_PATTERN));
processAll.setPrcStatus(ProcessStatusEnum.INCOMPLETE.getValue());
processAll.setCreateUserId(loginUser.getId());
processAllService.update(processAll,
new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getProcessInstanceId, processInstance.getId()));
String formatDate = DateUtil.format(date, DatePattern.PURE_DATETIME_MS_PATTERN);
// 更新流程总表信息
LambdaUpdateWrapper<ProcessAll> processAllUpdate = new LambdaUpdateWrapper<>();
processAllUpdate.eq(ProcessAll::getProcessInstanceId, processInstance.getId());
processAllUpdate.set(ProcessAll::getPrcNum, formatDate);
processAllUpdate.set(ProcessAll::getPrcStatus, ProcessStatusEnum.INCOMPLETE.getValue());
processAllUpdate.set(ProcessAll::getCreateUserId, loginUser.getId());
processAllUpdate.set(ProcessAll::getPrcType, ProcessType.STANDARD_INTERPRET.getValue());
processAllService.update(processAll, processAllUpdate);
// 根据流程实例id查询任务信息
Task task = taskService.createTaskQuery()
@@ -118,13 +254,13 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe
.singleResult();
// 更新流程审批信息
processApprovalRecord.setUserId(loginUser.getId());
processApprovalRecord.setProjectId(processAll.getProjectId());
processApprovalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue());
processApprovalRecord.setEndTime(new Date());
processApprovalRecordService.update(processApprovalRecord,
new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getTaskId, task.getId()));
LambdaUpdateWrapper<ProcessApprovalRecord> processApprovalRecordUpdate = new LambdaUpdateWrapper<>();
processApprovalRecordUpdate.eq(ProcessApprovalRecord::getTaskId, task.getId());
processApprovalRecordUpdate.set(ProcessApprovalRecord::getUserId, loginUser.getId());
processApprovalRecordUpdate.set(ProcessApprovalRecord::getProjectId, processAll.getProjectId());
processApprovalRecordUpdate.set(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.COMPLETE.getValue());
processApprovalRecordUpdate.set(ProcessApprovalRecord::getEndTime, new Date());
processApprovalRecordService.update(processApprovalRecord, processApprovalRecordUpdate);
// 新增流程实例节点关联用户表信息
processNodeLinkService.saveNodeUserLink(processInstance.getProcessDefinitionId(), processInstance.getId()
@@ -9,7 +9,6 @@ import com.jero.modules.activiti.entity.ProcessModelNode;
import com.jero.modules.activiti.entity.ProcessNode;
import com.jero.modules.activiti.mapper.ProcessModelNodeMapper;
import com.jero.modules.activiti.mapper.ProcessNodeMapper;
import com.jero.modules.activiti.process.common.enums.ProcessType;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -113,10 +112,6 @@ public class ProcessNodeService extends ServiceImpl<ProcessNodeMapper, ProcessNo
YesOrNoEnum.NO.getValue().equals(v.getIsSkip())
|| (YesOrNoEnum.YES.getValue().equals(v.getIsSkip()) && StringUtils.isNotBlank(v.getLinkUserIds())))
.collect(Collectors.toList());
// 复审流程特殊后处理
if (processDefinitionId.contains(ProcessType.ES_RECHECK.getProcessKey())) {
specialProcessEsRecheck(processNodeList, processInstanceId);
}
return processNodeList;
}
@@ -90,8 +90,11 @@ public class LawsHomeNormalSearchVO implements Serializable {
private String standardStateOrder;
/**
* 实施时间
* 实施日期
*/
@ApiModelProperty(value = "实施日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date implementationDate;
/**
* 入库时间