Merge remote-tracking branch 'origin/master'
This commit is contained in:
+5
-4
@@ -1,7 +1,7 @@
|
||||
package com.jero.modules.oss.controller;
|
||||
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.util.MinioUtil;
|
||||
import com.jero.common.util.obs.ObsBootUtil;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import com.jero.modules.oss.util.SplitFileUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -36,9 +36,10 @@ public class SplitFileController {
|
||||
response.setHeader("Content-Disposition",
|
||||
"attachment; filename=\"" + SplitFileUtils.encodeFileName(fileName, request) + "\"");
|
||||
response.setContentType("application/force-download");
|
||||
if (MinioUtil.doesObjectExist(fileUrl)) {
|
||||
// if (MinioUtil.doesObjectExist(fileUrl)) {
|
||||
try (OutputStream os = response.getOutputStream();
|
||||
InputStream fis = MinioUtil.download(fileUrl)) {
|
||||
// InputStream fis = MinioUtil.download(fileUrl)) {
|
||||
InputStream fis = ObsBootUtil.getOssFile(fileUrl)) {
|
||||
int len = 0;
|
||||
while ((len = fis.read()) != -1) {
|
||||
os.write(len);
|
||||
@@ -49,7 +50,7 @@ public class SplitFileController {
|
||||
} catch (IOException e) {
|
||||
throw new JeroBootException("文件不存在");
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -8,13 +8,8 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.util.MessageUtils;
|
||||
import com.jero.modules.activiti.entity.ProcessModelNode;
|
||||
import com.jero.modules.activiti.listener.CompleteListener;
|
||||
import com.jero.modules.activiti.listener.CreateListener;
|
||||
import com.jero.modules.activiti.listener.EndListener;
|
||||
import com.jero.modules.activiti.listener.StartListener;
|
||||
import com.jero.modules.activiti.service.ProcessNodeService;
|
||||
import com.jero.modules.activiti.service.ProcessModelNodeService;
|
||||
import com.jero.modules.activiti.util.CreatedTools;
|
||||
import com.jero.modules.activiti.vo.AddTaskVO;
|
||||
import com.jero.common.api.vo.ResultCommon;
|
||||
import io.swagger.annotations.Api;
|
||||
@@ -28,8 +23,6 @@ import org.activiti.bpmn.model.Process;
|
||||
import org.activiti.editor.constants.ModelDataJsonConstants;
|
||||
import org.activiti.editor.language.json.converter.BpmnJsonConverter;
|
||||
import org.activiti.engine.*;
|
||||
import org.activiti.engine.delegate.BaseExecutionListener;
|
||||
import org.activiti.engine.delegate.TaskListener;
|
||||
import org.activiti.engine.repository.*;
|
||||
import org.activiti.engine.runtime.ProcessInstance;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
+31
-1
@@ -21,11 +21,13 @@ import com.jero.modules.activiti.process.common.entity.ProcessSnapshot;
|
||||
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
|
||||
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
|
||||
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
|
||||
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
|
||||
import com.jero.modules.activiti.service.ProcessAllService;
|
||||
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||
import com.jero.modules.activiti.vo.DelegateTaskParam;
|
||||
import com.jero.modules.activiti.vo.ResolveTaskParam;
|
||||
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
||||
import com.jero.modules.sys.utils.UserUtils;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
@@ -33,6 +35,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@@ -131,11 +134,12 @@ public class WorkCenterController {
|
||||
public Result<?> getApprovalRecordList(ProcessApprovalRecord processApprovalRecord,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
|
||||
@RequestParam(name = "type") String type,
|
||||
HttpServletRequest req) {
|
||||
Page<ProcessApprovalRecord> page = new Page<>(pageNo, pageSize);
|
||||
Page<ProcessApprovalRecord> pageList;
|
||||
try {
|
||||
pageList = processApprovalRecordService.pageList(page, processApprovalRecord, req);
|
||||
pageList = processApprovalRecordService.pageList(page, processApprovalRecord, type, req);
|
||||
}catch (Exception e){
|
||||
return Result.error(MessageUtils.getMessage(ResultCommon.ERROR));
|
||||
}
|
||||
@@ -271,4 +275,30 @@ public class WorkCenterController {
|
||||
return Result.OK(actFlowCommonService.getExistSnapshot(snapshotId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存到草稿
|
||||
* @param
|
||||
*/
|
||||
@AutoLog(value = "保存")
|
||||
@ApiOperation(value="保存", notes="保存")
|
||||
@PostMapping("/save")
|
||||
public Result<?> save(@Validated @RequestBody ProcessInfoVO processInfoVO) {
|
||||
processHandleService.saveToDraft(processInfoVO, UserUtils.getUserId());
|
||||
return Result.OK();
|
||||
}
|
||||
|
||||
@AutoLog(value = "删除草稿")
|
||||
@ApiOperation(value = "删除草稿")
|
||||
@PostMapping("/deleteDraft")
|
||||
public Result<?> deleteDraft(@RequestBody Map<String, String> map) {
|
||||
String id = map.get("id");
|
||||
// 判断当前登录人是否属于草稿的所有人
|
||||
ProcessDraft processDraft = processDraftService.getById(id);
|
||||
if (!CurrentUserUtil.getId().equals(processDraft.getUserId())) {
|
||||
return Result.error(MessageUtils.getMessage(ResultCommon.NO_PERMISSION));
|
||||
}
|
||||
processDraftService.removeById(id);
|
||||
return Result.OK();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
package com.jero.modules.activiti.listener;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
import com.jero.modules.activiti.enums.FinishFlagEnum;
|
||||
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||
import com.jero.modules.activiti.util.SpringContextUtil;
|
||||
import org.activiti.engine.delegate.DelegateTask;
|
||||
import org.activiti.engine.delegate.TaskListener;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2023-10-15 17:02
|
||||
*/
|
||||
public class CompleteListener implements TaskListener {
|
||||
@Override
|
||||
public void notify(DelegateTask delegateTask) {
|
||||
//流程审批信息转办
|
||||
ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class);
|
||||
|
||||
String taskId = delegateTask.getId();
|
||||
String assignee = delegateTask.getAssignee();
|
||||
//更新审批信息为完成
|
||||
LambdaQueryWrapper<ProcessApprovalRecord> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessApprovalRecord::getTaskId,taskId);
|
||||
wrapper.eq(ProcessApprovalRecord::getUserId,assignee);
|
||||
ProcessApprovalRecord approvalRecord = recordService.getOne(wrapper);
|
||||
approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue());
|
||||
recordService.updateById(approvalRecord);
|
||||
|
||||
System.out.println(taskId);
|
||||
System.out.println(delegateTask.getName());
|
||||
System.out.println(delegateTask.getEventName());
|
||||
System.out.println(assignee);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
package com.jero.modules.activiti.listener;
|
||||
|
||||
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 com.jero.modules.activiti.util.SpringContextUtil;
|
||||
import org.activiti.bpmn.model.ActivitiListener;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.activiti.engine.delegate.DelegateExecution;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import org.activiti.engine.delegate.DelegateTask;
|
||||
import org.activiti.engine.delegate.TaskListener;
|
||||
import org.activiti.engine.task.DelegationState;
|
||||
import org.activiti.engine.task.IdentityLink;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2023-10-13 16:43
|
||||
*/
|
||||
public class CreateListener implements TaskListener {
|
||||
@Override
|
||||
public void notify(DelegateTask delegateTask) {
|
||||
//流程信息
|
||||
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
|
||||
//流程审批信息
|
||||
ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class);
|
||||
|
||||
String id = delegateTask.getId();
|
||||
String name = delegateTask.getName();
|
||||
String processInstanceId = delegateTask.getProcessInstanceId();
|
||||
Date createTime = delegateTask.getCreateTime();
|
||||
String assignee = delegateTask.getAssignee();
|
||||
String taskDefinitionKey = delegateTask.getTaskDefinitionKey();
|
||||
//新增待审批记录
|
||||
ProcessApprovalRecord approvalRecord = new ProcessApprovalRecord();
|
||||
approvalRecord.setTaskId(id);
|
||||
approvalRecord.setTaskName(name);
|
||||
approvalRecord.setProcessInstanceId(processInstanceId);
|
||||
approvalRecord.setUserId(assignee);
|
||||
approvalRecord.setFinishFlag(FinishFlagEnum.INCOMPLETE.getValue());
|
||||
approvalRecord.setCreateTime(createTime);
|
||||
approvalRecord.setNodeId(taskDefinitionKey);
|
||||
recordService.save(approvalRecord);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
package com.jero.modules.activiti.listener;
|
||||
|
||||
import cn.hutool.core.date.DateBetween;
|
||||
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.modules.activiti.entity.ProcessAll;
|
||||
import com.jero.modules.activiti.enums.ProcessStatusEnum;
|
||||
import com.jero.modules.activiti.service.ProcessAllService;
|
||||
import com.jero.modules.activiti.util.SpringContextUtil;
|
||||
import org.activiti.engine.delegate.DelegateExecution;
|
||||
import org.activiti.engine.delegate.DelegateTask;
|
||||
import org.activiti.engine.delegate.ExecutionListener;
|
||||
import org.activiti.engine.delegate.TaskListener;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2023-10-13 16:43
|
||||
*/
|
||||
public class EndListener implements ExecutionListener {
|
||||
@Override
|
||||
public void notify(DelegateExecution execution) {
|
||||
//流程信息
|
||||
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
|
||||
|
||||
String processInstanceId = execution.getProcessInstanceId();
|
||||
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
|
||||
Date createTime = processAll.getCreateTime();
|
||||
DateTime date = DateUtil.date();
|
||||
DateBetween between = date.between(createTime);
|
||||
|
||||
//更新流程总表信息为已完成
|
||||
LambdaUpdateWrapper<ProcessAll> wrapper = new LambdaUpdateWrapper<>();
|
||||
wrapper.eq(ProcessAll::getProcessInstanceId,processInstanceId);
|
||||
wrapper.set(ProcessAll::getPrcStatus, ProcessStatusEnum.COMPLETED.getValue());
|
||||
wrapper.set(ProcessAll::getEndTime,date);
|
||||
wrapper.set(ProcessAll::getOverTime,between.toString());
|
||||
processAllService.update(wrapper);
|
||||
}
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
package com.jero.modules.activiti.listener;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.engine.ProcessEngine;
|
||||
import org.activiti.engine.ProcessEngines;
|
||||
import org.activiti.engine.RuntimeService;
|
||||
import org.activiti.engine.delegate.DelegateTask;
|
||||
import org.activiti.engine.delegate.TaskListener;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2023-08-04 10:53
|
||||
*/
|
||||
@Slf4j
|
||||
public class SignListener implements TaskListener {
|
||||
@Override
|
||||
public void notify(DelegateTask delegateTask) {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
//获取流程id
|
||||
String taskId = delegateTask.getExecutionId();
|
||||
//获取流程参数pass,会签人员完成自己的审批任务时会添加流程参数pass,false为拒绝,true为同意
|
||||
// 1、创建ProcessEngine
|
||||
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
|
||||
// 2、获取RunTimeService
|
||||
RuntimeService runtimeService = processEngine.getRuntimeService();
|
||||
boolean pass = (Boolean) runtimeService.getVariable(taskId, "pass");
|
||||
|
||||
/* ${nrOfCompletedInstances/nrOfInstances==1}
|
||||
* false:有一个人拒绝,整个流程就结束了,
|
||||
* 因为Complete condition的值为pass == false,即,当流程参数为pass时会签就结束开始下一个任务
|
||||
* 所以,当pass == false时,直接设置下一个流程跳转需要的参数
|
||||
* true:审批人同意,同时要判断是不是所有的人都已经完成了,而不是由一个人同意该会签就结束
|
||||
* 值得注意的是如果一个审批人完成了审批进入到该监听时nrOfCompletedInstances的值还没有更新,因此需要+1
|
||||
*/
|
||||
Integer complete = (Integer) runtimeService.getVariable(taskId, "nrOfCompletedInstances");
|
||||
Integer all = (Integer) runtimeService.getVariable(taskId, "nrOfInstances");
|
||||
// 这里的test对应的是第一个节点中的对应的参数
|
||||
String username= (String) runtimeService.getVariable(delegateTask.getExecutionId(), "test");
|
||||
if(!pass){
|
||||
//会签结束,返回发起人节点
|
||||
runtimeService.setVariable(taskId, "countersignState", 0);
|
||||
runtimeService.setVariable(taskId, "test", username);
|
||||
}else{
|
||||
|
||||
//说明都完成了并且没有人拒绝
|
||||
if((complete + 1) / all == 1){
|
||||
// 流程流向下个节点 test2为下个节点人的参数
|
||||
runtimeService.setVariable(taskId, "countersignState", 1);
|
||||
runtimeService.setVariable(taskId, "test2", "xiaowang");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
package com.jero.modules.activiti.listener;
|
||||
|
||||
import com.jero.modules.activiti.entity.ProcessAll;
|
||||
import com.jero.modules.activiti.enums.ProcessStatusEnum;
|
||||
import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
||||
import com.jero.modules.activiti.service.ProcessAllService;
|
||||
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||
import com.jero.modules.activiti.util.SpringContextUtil;
|
||||
|
||||
import org.activiti.engine.*;
|
||||
import org.activiti.engine.delegate.DelegateExecution;
|
||||
import org.activiti.engine.delegate.ExecutionListener;
|
||||
import org.activiti.engine.repository.ProcessDefinition;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2023-10-13 16:43
|
||||
*/
|
||||
public class StartListener implements ExecutionListener {
|
||||
|
||||
@Override
|
||||
public void notify(DelegateExecution execution) {
|
||||
//流程信息
|
||||
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
|
||||
//流程审批信息
|
||||
ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class);
|
||||
String id = execution.getId();
|
||||
String processInstanceId = execution.getProcessInstanceId();
|
||||
String processDefinitionId = execution.getProcessDefinitionId();
|
||||
|
||||
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
|
||||
RepositoryService repositoryService = processEngine.getRepositoryService();
|
||||
ProcessDefinition processDefinition = repositoryService.getProcessDefinition(processDefinitionId);
|
||||
|
||||
String name = processDefinition.getName();
|
||||
String key = processDefinition.getKey();
|
||||
//新增流程总表信息(剩余的内容在启动流程时填充)
|
||||
ProcessAll processAll = new ProcessAll();
|
||||
processAll.setProcessInstanceId(processInstanceId);
|
||||
processAll.setPrcType(ProcessTypeEnum.getValueByName(name, processDefinitionId));
|
||||
processAll.setPrcStatus(ProcessStatusEnum.INCOMPLETE.getValue());
|
||||
processAllService.save(processAll);
|
||||
}
|
||||
}
|
||||
+23
@@ -36,6 +36,8 @@ import org.springframework.util.CollectionUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@@ -152,6 +154,27 @@ public class ActFlowCommonService {
|
||||
return processApprovalRecordService.getByTaskId(taskId);
|
||||
}
|
||||
|
||||
public void setListAttribute(String instanceId, String variableName, Consumer<List<String>> setter, Function<Object, List<String>> converter) {
|
||||
Object value = runtimeService.getVariable(instanceId, variableName);
|
||||
if (value != null) {
|
||||
setter.accept(converter.apply(value));
|
||||
}
|
||||
}
|
||||
|
||||
public void setStringAttribute(String instanceId, String variableName, Consumer<String> setter, Function<Object, String> converter) {
|
||||
Object value = runtimeService.getVariable(instanceId, variableName);
|
||||
if (value != null) {
|
||||
setter.accept(converter.apply(value));
|
||||
}
|
||||
}
|
||||
|
||||
public void setStringBooleanAttribute(String instanceId, String variableName, Consumer<String> setter, Function<Object, String> converter) {
|
||||
Object value = runtimeService.getVariable(instanceId, variableName);
|
||||
if (value != null) {
|
||||
setter.accept(converter.apply(value));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 完成提交任务
|
||||
*/
|
||||
|
||||
+6
@@ -73,4 +73,10 @@ public class ProcessStandardComplianceCheckConstants {
|
||||
public static final String AUTO_TASK_1 = "sid-95E41F78-FE01-4FEC-BF8B-EC11DFBA8824";
|
||||
public static final String AUTO_TASK_2 = "autoTask_2";
|
||||
public static final String AUTO_TASK_3 = "autoTask_3";
|
||||
|
||||
public static final String CONFORM_TO = "1";
|
||||
public static final String DISCREPANCY = "2";
|
||||
public static final String NOT_INVOLVE = "3";
|
||||
public static final String TO_BE_VERIFIED = "4";
|
||||
|
||||
}
|
||||
|
||||
+4
@@ -195,6 +195,10 @@ public class ProcessStandardComplianceCheck implements Serializable {
|
||||
@TableField(exist = false)
|
||||
private String seniorManager;
|
||||
|
||||
@ApiModelProperty(value = "是否锁定下发下拉选项")
|
||||
@TableField(exist = false)
|
||||
private boolean lockDistributeFlag;
|
||||
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
||||
+2
-2
@@ -93,7 +93,7 @@ public class ProcessStandardComplianceCheckDetail implements Serializable {
|
||||
*/
|
||||
@ApiModelProperty(value = "车型状态")
|
||||
@Dict(dicCode = "model_status")
|
||||
private String modelState;
|
||||
private String modelStatus;
|
||||
|
||||
/**
|
||||
* 评估人
|
||||
@@ -145,7 +145,7 @@ public class ProcessStandardComplianceCheckDetail implements Serializable {
|
||||
*/
|
||||
@ApiModelProperty(value = "整改周期")
|
||||
@Dict(dicCode = "correction_period")
|
||||
private String correctionCycle;
|
||||
private String correctionPeriod;
|
||||
|
||||
/**
|
||||
* 整改费用
|
||||
|
||||
+60
-1
@@ -1,10 +1,28 @@
|
||||
package com.jero.modules.activiti.process.standardComplianceCheck.listener;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheck;
|
||||
import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheckDetail;
|
||||
import com.jero.modules.activiti.process.standardComplianceCheck.service.IProcessStandardComplianceCheckDetailService;
|
||||
import com.jero.modules.activiti.process.standardComplianceCheck.service.IProcessStandardComplianceCheckService;
|
||||
import com.jero.modules.assessmentLibrary.entity.LawsConformityAssessmentLibrary;
|
||||
import com.jero.modules.assessmentLibrary.entity.LawsConformityAssessmentLibraryDetail;
|
||||
import com.jero.modules.assessmentLibrary.entity.LawsEvaluationNotMetLibrary;
|
||||
import com.jero.modules.assessmentLibrary.service.ILawsConformityAssessmentLibraryDetailService;
|
||||
import com.jero.modules.assessmentLibrary.service.ILawsConformityAssessmentLibraryService;
|
||||
import com.jero.modules.assessmentLibrary.service.ILawsEvaluationNotMetLibraryService;
|
||||
import com.jero.modules.laws.enterprise.util.BeanCopyUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.engine.delegate.DelegateExecution;
|
||||
import org.activiti.engine.delegate.ExecutionListener;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.*;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2023-06-18 15:43
|
||||
@@ -13,8 +31,49 @@ import org.springframework.stereotype.Component;
|
||||
@Component
|
||||
public class ProcessSCCEndListener implements ExecutionListener {
|
||||
|
||||
@Resource
|
||||
private IProcessStandardComplianceCheckService sccService;
|
||||
|
||||
@Resource
|
||||
private IProcessStandardComplianceCheckDetailService sccDetailService;
|
||||
|
||||
@Resource
|
||||
private ILawsConformityAssessmentLibraryService calService;
|
||||
|
||||
@Resource
|
||||
private ILawsConformityAssessmentLibraryDetailService calDetailService;
|
||||
|
||||
@Resource
|
||||
private ILawsEvaluationNotMetLibraryService notMetService;
|
||||
|
||||
@Override
|
||||
public void notify(DelegateExecution delegateExecution) {
|
||||
log.info("流程结束");
|
||||
log.info("法规符合性排查流程结束监听器开始执行");
|
||||
LambdaQueryWrapper<ProcessStandardComplianceCheck> sccWrapper = new LambdaQueryWrapper<>();
|
||||
LambdaQueryWrapper<ProcessStandardComplianceCheckDetail> sccDetailWrapper = new LambdaQueryWrapper<>();
|
||||
// 找到流程数据
|
||||
String processInstanceId = delegateExecution.getProcessInstanceId();
|
||||
sccWrapper.eq(ProcessStandardComplianceCheck::getProcessInstanceId, processInstanceId);
|
||||
ProcessStandardComplianceCheck scc = sccService.getOne(sccWrapper);
|
||||
// 找到条款数据
|
||||
sccDetailWrapper.eq(ProcessStandardComplianceCheckDetail::getCheckId, scc.getId());
|
||||
List<ProcessStandardComplianceCheckDetail> list = sccDetailService.list(sccDetailWrapper);
|
||||
// 入库保存
|
||||
LawsConformityAssessmentLibrary lawsConformityAssessmentLibrary = BeanCopyUtils.copyBean(scc, LawsConformityAssessmentLibrary.class);
|
||||
lawsConformityAssessmentLibrary.setId(null);
|
||||
calService.save(lawsConformityAssessmentLibrary);
|
||||
List<LawsConformityAssessmentLibraryDetail> lawsConformityAssessmentLibraryDetails = BeanCopyUtils.copyBeanList(list, LawsConformityAssessmentLibraryDetail.class);
|
||||
lawsConformityAssessmentLibraryDetails.forEach(detail -> {
|
||||
detail.setBindId(lawsConformityAssessmentLibrary.getId());
|
||||
});
|
||||
calDetailService.saveBatch(lawsConformityAssessmentLibraryDetails);
|
||||
// 找出不符合和待验证的存入不符合项库
|
||||
List<LawsConformityAssessmentLibraryDetail> notList = lawsConformityAssessmentLibraryDetails
|
||||
.stream().filter(detail -> detail.getResult().equals(DISCREPANCY) ||
|
||||
detail.getResult().equals(NOT_INVOLVE)).collect(Collectors.toList());
|
||||
List<LawsEvaluationNotMetLibrary> lawsEvaluationNotMetLibraries = BeanCopyUtils.copyBeanList(notList, LawsEvaluationNotMetLibrary.class);
|
||||
lawsEvaluationNotMetLibraries.forEach(detail -> detail.setId(null));
|
||||
notMetService.saveBatch(lawsEvaluationNotMetLibraries);
|
||||
log.info("法规符合性排查流程结束监听器结束执行");
|
||||
}
|
||||
}
|
||||
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
package com.jero.modules.activiti.process.standardComplianceCheck.service;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.modules.activiti.entity.ProcessAll;
|
||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheck;
|
||||
import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheckDetail;
|
||||
import com.jero.modules.activiti.service.ProcessAllService;
|
||||
import com.jero.modules.activiti.service.WorkCenterService;
|
||||
import com.jero.modules.activiti.util.SpringContextUtil;
|
||||
import com.jero.modules.activiti.vo.DelegateTaskParam;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.engine.RuntimeService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.jero.modules.activiti.common.ActivitiCommon.MAIN_INSTANCE_ID;
|
||||
import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.MAIN_CHECK_USER;
|
||||
import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.MAIN_CHECK_USER_APPROVAL;
|
||||
|
||||
/**
|
||||
* @ClassName: EsInspectPlanFlowService
|
||||
* @Description:
|
||||
* @Author: yjz
|
||||
* @Date: 2024-01-11 21:19
|
||||
* @Version: 1.0
|
||||
**/
|
||||
@Slf4j
|
||||
@Transactional(rollbackFor = {Exception.class, JeroBootException.class})
|
||||
@Service
|
||||
public class StandardComplianceCheckFlow implements WorkCenterService {
|
||||
|
||||
@Resource
|
||||
private IProcessStandardComplianceCheckService sccService;
|
||||
|
||||
@Resource
|
||||
private IProcessStandardComplianceCheckDetailService sccDetailService;
|
||||
|
||||
@Resource
|
||||
private RuntimeService runtimeService;
|
||||
|
||||
/**
|
||||
* 强制撤回
|
||||
* @param processAll 流程总表
|
||||
*/
|
||||
@Override
|
||||
public void changeToDraft(ProcessAll processAll) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 转办
|
||||
* @param processAll
|
||||
* @param processApprovalRecord
|
||||
* @param toUserId
|
||||
* @param userId
|
||||
*/
|
||||
@Override
|
||||
public void handleTransfer(ProcessAll processAll, ProcessApprovalRecord processApprovalRecord, String toUserId, String userId) {
|
||||
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
|
||||
processAllService.specialTransfer(processAll, processApprovalRecord, toUserId, userId);
|
||||
// 子流程中的主排查人的转办需要修改其余所有子流程及主流程中的数据
|
||||
String nodeId = processApprovalRecord.getNodeId();
|
||||
if (nodeId.equals(MAIN_CHECK_USER_APPROVAL)) {
|
||||
String processInstanceId = processApprovalRecord.getProcessInstanceId();
|
||||
String mainInstanceId = (String) runtimeService.getVariable(processInstanceId, MAIN_INSTANCE_ID);
|
||||
LambdaQueryWrapper<ProcessStandardComplianceCheck> sccWrapper = new LambdaQueryWrapper<>();
|
||||
sccWrapper.eq(ProcessStandardComplianceCheck::getProcessInstanceId, mainInstanceId);
|
||||
ProcessStandardComplianceCheck scc = sccService.getOne(sccWrapper);
|
||||
LambdaQueryWrapper<ProcessStandardComplianceCheckDetail> sccDetailWrapper = new LambdaQueryWrapper<>();
|
||||
sccDetailWrapper.eq(ProcessStandardComplianceCheckDetail::getCheckId, scc.getId());
|
||||
sccDetailWrapper.isNotNull(ProcessStandardComplianceCheckDetail::getProcessInstanceId);
|
||||
List<ProcessStandardComplianceCheckDetail> sccDetailList = sccDetailService.list(sccDetailWrapper);
|
||||
if (CollUtil.isEmpty(sccDetailList)) {
|
||||
return;
|
||||
}
|
||||
List<String> allChildProcessInstanceId = sccDetailList.stream()
|
||||
.map(ProcessStandardComplianceCheckDetail::getProcessInstanceId).distinct().collect(Collectors.toList());
|
||||
allChildProcessInstanceId.forEach(childProcessInstanceId -> {
|
||||
runtimeService.setVariable(childProcessInstanceId, MAIN_CHECK_USER, toUserId);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flowCountersign(DelegateTaskParam param) {
|
||||
|
||||
}
|
||||
}
|
||||
+42
-34
@@ -52,8 +52,6 @@ import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.jero.modules.activiti.common.ActivitiCommon.*;
|
||||
@@ -223,11 +221,6 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
||||
case SENIOR_MANAGER_APPROVAL:
|
||||
runtimeService.setVariable(processInstanceId, PASS, pass);
|
||||
break;
|
||||
}
|
||||
// TODO 转办修改流程变量逻辑
|
||||
switch (xmlNodeId) {
|
||||
|
||||
|
||||
}
|
||||
// 保存快照
|
||||
processHandleService.saveToSnapshot(processInfoVO, curUserId);
|
||||
@@ -251,6 +244,11 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
||||
ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId);
|
||||
String xmlNodeId = record.getNodeId();
|
||||
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
|
||||
BasicProcessInfoDTO processInfo = new BasicProcessInfoDTO();
|
||||
// 使用流程引擎根据taskId找到流程实例Id
|
||||
String mainInstanceId = (String) taskService.getVariable(taskId, MAIN_INSTANCE_ID);
|
||||
processInfo.setProcessInstanceId(mainInstanceId);
|
||||
processInfoVO.setBasicProcessInfoDTO(processInfo);
|
||||
// 更新审批表为完成,填充数据
|
||||
actFlowCommonService.updateApprovalInfo(processTask, taskId);
|
||||
String curUserId = UserUtils.getUserId();
|
||||
@@ -260,6 +258,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
||||
ProcessSccVO businessInfoDTO = processInfoVO.getBusinessInfoDTO();
|
||||
ProcessStandardComplianceCheck standardInfo = businessInfoDTO.getStandardInfo();
|
||||
List<ProcessStandardComplianceCheckDetail> detailInfoList = businessInfoDTO.getDetailInfoList();
|
||||
List<String> detailInfoListIds = detailInfoList.stream()
|
||||
.map(ProcessStandardComplianceCheckDetail::getId).collect(Collectors.toList());
|
||||
// 根据流程实例Id获取流程定义ID
|
||||
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
|
||||
// 获取流程实例ID
|
||||
@@ -338,7 +338,10 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
||||
detail.setAssessor(curUserId);
|
||||
detail.setAuthDept(curUserDepartIds);
|
||||
});
|
||||
sccDetailService.updateBatchById(detailInfoList);
|
||||
// 先删后增
|
||||
removeByIds(detailInfoListIds);
|
||||
detailInfoList.forEach(detail -> detail.setValuationTime(new Date()));
|
||||
sccDetailService.saveBatch(detailInfoList);
|
||||
}
|
||||
runtimeService.setVariable(processInstanceId, DISTRIBUTE, distributeFlag);
|
||||
runtimeService.setVariable(processInstanceId, UNALLOCATED_QUANTITY, unallocatedQuantity);
|
||||
@@ -349,12 +352,29 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
||||
detailInfoList.forEach(detail -> {
|
||||
detail.setAssessor(curUserId);
|
||||
detail.setAuthDept(curUserDepartIds);
|
||||
detail.setValuationTime(new Date());
|
||||
});
|
||||
sccDetailService.updateBatchById(detailInfoList);
|
||||
// 先删后增
|
||||
removeByIds(detailInfoListIds);
|
||||
sccDetailService.saveBatch(detailInfoList);
|
||||
runtimeService.setVariable(processInstanceId, DESIGNER, curUserId);
|
||||
break;
|
||||
case MAIN_CHECK_USER_COLLECT:
|
||||
sccDetailService.updateBatchById(detailInfoList);
|
||||
// 先删后增
|
||||
removeByIds(detailInfoListIds);
|
||||
sccDetailService.saveBatch(detailInfoList);
|
||||
// 不分发直接设置后续审批节点的人员变量
|
||||
List<String> counterSignUserList = Arrays.asList(standardInfo.getCountersignUser().split(","));
|
||||
List<String> managerList = Arrays.asList(standardInfo.getManager().split(","));
|
||||
List<String> seniorMangagerList = Arrays.asList(standardInfo.getSeniorManager().split(","));
|
||||
runtimeService.setVariable(processInstanceId, COUNTERSIGN_USER_LIST, counterSignUserList);
|
||||
runtimeService.setVariable(processInstanceId, MANAGER_LIST, managerList);
|
||||
runtimeService.setVariable(processInstanceId, SENIOR_MANAGER_LIST, seniorMangagerList);
|
||||
// 保存选人信息
|
||||
userMap.put(COUNTERSIGN_USER_LIST, standardInfo.getCountersignUser());
|
||||
userMap.put(MANAGER_LIST, standardInfo.getManager());
|
||||
userMap.put(SENIOR_MANAGER_LIST, standardInfo.getSeniorManager());
|
||||
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap);
|
||||
break;
|
||||
}
|
||||
runtimeService.setVariable(processInstanceId, PASS, true);
|
||||
@@ -364,6 +384,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
||||
actFlowCommonService.updateApprovalInfo(processTask, taskId);
|
||||
// 删除草稿
|
||||
actFlowCommonService.removeDraft(curUserId, taskId, processInstanceId);
|
||||
// 保存快照
|
||||
processHandleService.saveToSnapshot(processInfoVO, curUserId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -438,29 +460,15 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
||||
}
|
||||
|
||||
private void handleDataVariables(ProcessStandardComplianceCheck scc, String mainInstanceId) {
|
||||
Object distributeFlag = runtimeService.getVariable(mainInstanceId, DISTRIBUTE);
|
||||
if (distributeFlag != null) {
|
||||
scc.setDistributeFlag((boolean)distributeFlag ? YesOrNoEnum.YES.getValue() : YesOrNoEnum.NO.getValue());
|
||||
}
|
||||
setStringAttribute(mainInstanceId, DEPT_USER, scc::setDeptUser, Object::toString);
|
||||
setStringAttribute(mainInstanceId, MAIN_CHECK_USER, scc::setMainCheckUser, Object::toString);
|
||||
// setListAttribute(mainInstanceId, COUNTERSIGN_USER_LIST, v -> scc.setCountersignUser(String.join(",", (List<String>) v)), v -> (List<String>) v);
|
||||
// setListAttribute(mainInstanceId, MANAGER, scc::setManager, Object::toString);
|
||||
// setListAttribute(mainInstanceId, SENIOR_MANAGER, scc::setSeniorManager, Object::toString);
|
||||
}
|
||||
|
||||
private void setListAttribute(String instanceId, String variableName, Consumer<List<String>> setter, Function<Object, List<String>> converter) {
|
||||
Object value = runtimeService.getVariable(instanceId, variableName);
|
||||
if (value != null) {
|
||||
setter.accept(converter.apply(value));
|
||||
}
|
||||
}
|
||||
|
||||
private void setStringAttribute(String instanceId, String variableName, Consumer<String> setter, Function<Object, String> converter) {
|
||||
Object value = runtimeService.getVariable(instanceId, variableName);
|
||||
if (value != null) {
|
||||
setter.accept(converter.apply(value));
|
||||
}
|
||||
actFlowCommonService.setStringBooleanAttribute(mainInstanceId, DISTRIBUTE, scc::setDistributeFlag, value -> (boolean) value ? YesOrNoEnum.YES.getValue() : YesOrNoEnum.NO.getValue());
|
||||
// 如果没有下发过
|
||||
String distributeFlag = scc.getDistributeFlag();
|
||||
scc.setLockDistributeFlag(YesOrNoEnum.YES.getValue().equals(distributeFlag));
|
||||
actFlowCommonService.setStringAttribute(mainInstanceId, DEPT_USER, scc::setDeptUser, Object::toString);
|
||||
actFlowCommonService.setStringAttribute(mainInstanceId, MAIN_CHECK_USER, scc::setMainCheckUser, Object::toString);
|
||||
actFlowCommonService.setListAttribute(mainInstanceId, COUNTERSIGN_USER_LIST, v -> scc.setCountersignUser(String.join(",", v)), v -> (List<String>) v);
|
||||
actFlowCommonService.setListAttribute(mainInstanceId, MANAGER_LIST, v -> scc.setManager(String.join(",", v)), v -> (List<String>) v);
|
||||
actFlowCommonService.setListAttribute(mainInstanceId, SENIOR_MANAGER_LIST, v -> scc.setSeniorManager(String.join(",", v)), v -> (List<String>) v);
|
||||
}
|
||||
|
||||
private void setDesignerEngineerEvaluationHandleData(ProcessSccVO processSccVO, String mainInstanceId, String processInstanceId) {
|
||||
@@ -574,7 +582,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
||||
for (ModelExcelVO modelExcelVO : modelExcelVOList) {
|
||||
ProcessStandardComplianceCheckDetail detail = new ProcessStandardComplianceCheckDetail();
|
||||
detail.setModel(modelExcelVO.getModel());
|
||||
detail.setModelState(modelExcelVO.getModelState());
|
||||
detail.setModelStatus(modelExcelVO.getModelState());
|
||||
detail.setTermNumber(detailInfo.getTermNumber());
|
||||
detail.setTermTitle(detailInfo.getTermTitle());
|
||||
detail.setTermContent(detailInfo.getTermContent());
|
||||
|
||||
@@ -228,6 +228,7 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
|
||||
processDraftUpdateWrapper.eq(ProcessDraft::getId, processDraft.getId());
|
||||
processDraftUpdateWrapper.set(ProcessDraft::getSaveSource, null);
|
||||
processDraftUpdateWrapper.set(ProcessDraft::getProcessInstanceId, null);
|
||||
processDraftUpdateWrapper.set(ProcessDraft::getTaskId, null);
|
||||
processDraftService.update(processDraftUpdateWrapper);
|
||||
}
|
||||
//activiti撤销
|
||||
|
||||
+21
-6
@@ -1,6 +1,7 @@
|
||||
package com.jero.modules.activiti.service;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -13,6 +14,7 @@ import com.jero.modules.activiti.mapper.ProcessApprovalRecordMapper;
|
||||
import com.jero.modules.activiti.process.common.entity.ProcessSnapshot;
|
||||
import com.jero.modules.activiti.process.common.service.ProcessSnapshotService;
|
||||
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
||||
import com.jero.modules.sys.utils.UserUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -31,6 +33,14 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@Service
|
||||
public class ProcessApprovalRecordService extends ServiceImpl<ProcessApprovalRecordMapper, ProcessApprovalRecord> {
|
||||
|
||||
// 已办
|
||||
public static final String COMPLETED_RECORD_LIST = "1";
|
||||
// 已发
|
||||
public static final String SENT_RECORD_LIST = "2";
|
||||
// 流程监控
|
||||
public static final String ALL_RECORD_LIST = "3";
|
||||
|
||||
@Resource
|
||||
private ISysBaseAPI sysBaseAPI;
|
||||
|
||||
@@ -50,7 +60,9 @@ public class ProcessApprovalRecordService extends ServiceImpl<ProcessApprovalRec
|
||||
return this.getOne(wrapper);
|
||||
}
|
||||
|
||||
public Page<ProcessApprovalRecord> pageList(Page<ProcessApprovalRecord> page, ProcessApprovalRecord processApprovalRecord, HttpServletRequest req) {
|
||||
public Page<ProcessApprovalRecord> pageList(Page<ProcessApprovalRecord> page, ProcessApprovalRecord processApprovalRecord, String type, HttpServletRequest req) {
|
||||
boolean allSnapshotFlag = type.equals(ALL_RECORD_LIST);
|
||||
String curUserId = UserUtils.getUserId();
|
||||
QueryWrapper<ProcessApprovalRecord> wrapper = new QueryWrapper<>();
|
||||
if (StringUtils.isNotBlank(processApprovalRecord.getFinishFlagSearch())){
|
||||
wrapper.in("finish_flag", Arrays.asList(processApprovalRecord.getFinishFlagSearch().split(",")));
|
||||
@@ -66,12 +78,15 @@ public class ProcessApprovalRecordService extends ServiceImpl<ProcessApprovalRec
|
||||
List<ProcessSnapshot> snapshotList = processSnapshotService.list(processSnapshotWrapper);
|
||||
Map<String, List<ProcessSnapshot>> snapshotMap = snapshotList.stream().collect(Collectors.groupingBy(ProcessSnapshot::getTaskId));
|
||||
for (ProcessApprovalRecord record : records) {
|
||||
List<ProcessSnapshot> processSnapshots = snapshotMap.get(record.getTaskId());
|
||||
if (CollUtil.isNotEmpty(processSnapshots)) {
|
||||
ProcessSnapshot snapshot = processSnapshots.get(0);
|
||||
record.setSnapshotId(snapshot.getId());
|
||||
}
|
||||
String userId = record.getUserId();
|
||||
if (StrUtil.isNotBlank(userId) && (allSnapshotFlag || curUserId.equals(userId))) {
|
||||
List<ProcessSnapshot> processSnapshots = snapshotMap.get(record.getTaskId());
|
||||
if (CollUtil.isNotEmpty(processSnapshots)) {
|
||||
ProcessSnapshot snapshot = processSnapshots.get(0);
|
||||
record.setSnapshotId(snapshot.getId());
|
||||
}
|
||||
}
|
||||
|
||||
String taskAcceptor = sysBaseAPI.translateUserRealNameFromTable(userId);
|
||||
String delegateBy = record.getDelegateBy();
|
||||
if (StringUtils.isNotBlank(delegateBy)){
|
||||
|
||||
+32
-20
@@ -1,15 +1,19 @@
|
||||
package com.jero.modules.activiti.service;
|
||||
|
||||
import cn.hutool.core.collection.CollStreamUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.modules.activiti.common.ActivitiCommon;
|
||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
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 lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.engine.RuntimeService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
@@ -21,6 +25,9 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.jero.modules.activiti.common.ActivitiCommon.DISTRIBUTE;
|
||||
import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.*;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2023-09-26 15:12
|
||||
@@ -34,6 +41,12 @@ public class ProcessNodeService extends ServiceImpl<ProcessNodeMapper, ProcessNo
|
||||
@Resource
|
||||
private ProcessNodeMapper processNodeMapper;
|
||||
|
||||
@Resource
|
||||
private RuntimeService runtimeService;
|
||||
|
||||
@Resource
|
||||
private ProcessApprovalRecordService parService;
|
||||
|
||||
public void copyNodeFromModel(String modelId, String processDefinitionId) {
|
||||
LambdaQueryWrapper<ProcessModelNode> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessModelNode::getNodeType, "userTask");
|
||||
@@ -114,30 +127,29 @@ public class ProcessNodeService extends ServiceImpl<ProcessNodeMapper, ProcessNo
|
||||
// 过滤掉自动处理任务节点
|
||||
processNodeList = processNodeList.stream().filter(v -> !"123".equals(v.getVariableName()))
|
||||
.collect(Collectors.toList());
|
||||
specialProcessScc(processNodeList, processInstanceId);
|
||||
return processNodeList;
|
||||
}
|
||||
|
||||
private void specialProcessEsRecheck(List<ProcessNode> processNodeList, String processInstanceId) {
|
||||
// 如果有标准化发起节点,但是没有人员,则删除标准化发起节点
|
||||
ProcessNode firstNode = processNodeList.get(0);
|
||||
ProcessNode secondNode = processNodeList.get(1);
|
||||
if (StrUtil.isNotBlank(secondNode.getLinkUserIds())) {
|
||||
if (StrUtil.isBlank(firstNode.getLinkUserIds())) {
|
||||
processNodeList.remove(0);
|
||||
}
|
||||
private void specialProcessScc(List<ProcessNode> processNodeList, String processInstanceId) {
|
||||
if (StrUtil.isBlank(processInstanceId)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private void specialProcessEsMiniProcessEnd(List<ProcessNode> processNodeList) {
|
||||
// 如果第三个节点有选人信息,则判断相关人员会签节点是否有人,如果没人,则删除相关人员会签节点
|
||||
if (processNodeList.size() >= 3) {
|
||||
ProcessNode processNode = processNodeList.get(2);
|
||||
if (StrUtil.isNotBlank(processNode.getLinkUserIds())) {
|
||||
ProcessNode processNode1 = processNodeList.get(1);
|
||||
if (StrUtil.isBlank(processNode1.getLinkUserIds())) {
|
||||
processNodeList.remove(1);
|
||||
}
|
||||
}
|
||||
// 如果没分发 则不显示 主排查人单线审核 主排查人汇总节点
|
||||
String mainInstanceId = (String) runtimeService.getVariable(processInstanceId, ActivitiCommon.MAIN_INSTANCE_ID);
|
||||
Object variable = runtimeService.getVariable(mainInstanceId, DISTRIBUTE);
|
||||
boolean distribute = ObjectUtil.isNotNull(variable) && YesOrNoEnum.YES.getValue().equals(variable.toString());
|
||||
if (!distribute) {
|
||||
processNodeList.removeIf( v -> v.getXmlNodeId().equals(MAIN_CHECK_USER_APPROVAL)
|
||||
|| v.getXmlNodeId().equals(MAIN_CHECK_USER_COLLECT));
|
||||
}
|
||||
// 判断有没有 主排查人重新分批下发 节点
|
||||
LambdaQueryWrapper<ProcessApprovalRecord> parWrapper = new LambdaQueryWrapper<>();
|
||||
parWrapper.eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId);
|
||||
parWrapper.eq(ProcessApprovalRecord::getNodeId, MAIN_CHECK_USER_REDISTRIBUTE);
|
||||
List<ProcessApprovalRecord> list = parService.list(parWrapper);
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
processNodeList.removeIf( v -> v.getXmlNodeId().equals(MAIN_CHECK_USER_REDISTRIBUTE));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+16
-17
@@ -4,15 +4,15 @@ 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 java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.jero.common.aspect.annotation.Dict;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 法规符合性评估库
|
||||
* @TableName laws_conformity_assessment_library
|
||||
@@ -40,6 +40,19 @@ public class LawsConformityAssessmentLibrary implements Serializable {
|
||||
@ApiModelProperty(value = "标准ID")
|
||||
private String standardId;
|
||||
|
||||
/**
|
||||
* 标准编号
|
||||
*/
|
||||
@ApiModelProperty(value = "标准编号")
|
||||
private String standardNumber;
|
||||
|
||||
/**
|
||||
* 标准名称
|
||||
*/
|
||||
@ApiModelProperty(value = "标准名称")
|
||||
private String standardName;
|
||||
|
||||
|
||||
/**
|
||||
* 评估日期
|
||||
*/
|
||||
@@ -62,20 +75,6 @@ public class LawsConformityAssessmentLibrary implements Serializable {
|
||||
@ApiModelProperty(value = "结束评估日期")
|
||||
private Date endValuationTime;
|
||||
|
||||
/**
|
||||
* 标准编号
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "标准编号")
|
||||
private String standardNumber;
|
||||
|
||||
/**
|
||||
* 标准名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "标准名称")
|
||||
private String standardName;
|
||||
|
||||
/**
|
||||
* 适用市场
|
||||
*/
|
||||
|
||||
-2
@@ -229,7 +229,6 @@ public class LawsEvaluationNotMetLibrary implements Serializable {
|
||||
/**
|
||||
* 标准编号
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "标准编号")
|
||||
@Excel(name = "标准编号", width = 15, orderNum = "3")
|
||||
private String standardNumber;
|
||||
@@ -237,7 +236,6 @@ public class LawsEvaluationNotMetLibrary implements Serializable {
|
||||
/**
|
||||
* 标准名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "标准名称")
|
||||
@Excel(name = "标准编号", width = 15, orderNum = "4")
|
||||
private String standardName;
|
||||
|
||||
+44
-36
@@ -2,12 +2,14 @@ package com.jero.modules.split.service.impl;
|
||||
|
||||
import cn.hutool.core.lang.RegexPool;
|
||||
import cn.hutool.core.util.ReUtil;
|
||||
import cn.hutool.http.Header;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.common.util.IntekeyUtils;
|
||||
import com.jero.common.util.MinioUtil;
|
||||
import com.jero.common.util.UUIDUtils;
|
||||
import com.jero.common.util.obs.ObsBootUtil;
|
||||
import com.jero.modules.laws.documenttool.mapper.DocumentSplitMapper;
|
||||
import com.jero.modules.laws.standard.entity.LawsDomesticStandard;
|
||||
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
|
||||
@@ -40,6 +42,8 @@ import org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObject;
|
||||
import org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture;
|
||||
import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTAnchor;
|
||||
import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline;
|
||||
import org.openxmlformats.schemas.officeDocument.x2006.math.CTOMath;
|
||||
import org.openxmlformats.schemas.officeDocument.x2006.math.CTOMathPara;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDrawing;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLevelText;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;
|
||||
@@ -55,6 +59,7 @@ import org.w3c.dom.NamedNodeMap;
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.NodeList;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.*;
|
||||
@@ -173,10 +178,11 @@ public class FileSpiltService {
|
||||
}
|
||||
OSSFile ossFile = ossFileList.get(0);
|
||||
String readFilePath = ossFile.getUrl();
|
||||
if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) {
|
||||
if (StringUtils.isEmpty(readFilePath)) {
|
||||
throw new JeroBootException("当前文件未找到,请重新选择!");
|
||||
}
|
||||
try (InputStream is = MinioUtil.download(readFilePath);InputStream is1 = MinioUtil.download(readFilePath)) {
|
||||
// try (InputStream is = MinioUtil.download(readFilePath);InputStream is1 = MinioUtil.download(readFilePath)) {
|
||||
try (InputStream is = ObsBootUtil.getOssFile(readFilePath);InputStream is1 = ObsBootUtil.getOssFile(readFilePath)) {
|
||||
String fileName = readFilePath.substring((readFilePath.lastIndexOf("/") + 1));
|
||||
MultipartFile mFile = new MockMultipartFile(fileName, fileName, ContentType.APPLICATION_OCTET_STREAM.toString(), is);
|
||||
MultipartFile mFile1 = new MockMultipartFile(fileName, fileName, ContentType.APPLICATION_OCTET_STREAM.toString(), is1);
|
||||
@@ -217,34 +223,34 @@ public class FileSpiltService {
|
||||
// //处理段落中的文本以及图片
|
||||
// handleParagraphRun(content, (XWPFRun) child, imageParser);
|
||||
//} else
|
||||
// if (child instanceof CTOMath) {
|
||||
// CTOMath ctoMath = (CTOMath) child;
|
||||
// String xmlText = ctoMath.xmlText().replaceAll("xml-fragment","m:oMath");
|
||||
// Map<String, Object> map = new HashMap<>();
|
||||
// map.put("encode", xmlText);
|
||||
// String post = HttpRequest.post(mathToImgUrl)
|
||||
// .header(Header.CONTENT_TYPE, "application/json")
|
||||
// .body(xmlText)
|
||||
// .execute().body();
|
||||
// //String post = HttpUtil.post(mathToImgUrl, map);
|
||||
// if (messageList.size() > 0) {
|
||||
// addItermsMathImage(messageList.get(messageList.size() - 1), itemValList, post);
|
||||
// }
|
||||
// }
|
||||
// else if (child instanceof CTOMathPara) {
|
||||
// CTOMathPara ctoMathPara = (CTOMathPara) child;
|
||||
// String xmlText = ctoMathPara.xmlText().replaceAll("xml-fragment","m:oMath");;
|
||||
// Map<String,Object> map = new HashMap<>();
|
||||
// map.put("encode",xmlText);
|
||||
// String post = HttpRequest.post(mathToImgUrl)
|
||||
// .header(Header.CONTENT_TYPE, "application/json")
|
||||
// .body(xmlText)
|
||||
// .execute().body();
|
||||
// //String post = HttpUtil.post(mathToImgUrl, map);
|
||||
// if (messageList.size() > 0) {
|
||||
// addItermsMathImage(messageList.get(messageList.size() - 1), itemValList, post);
|
||||
// }
|
||||
// }
|
||||
if (child instanceof CTOMath) {
|
||||
CTOMath ctoMath = (CTOMath) child;
|
||||
String xmlText = ctoMath.xmlText().replaceAll("xml-fragment","m:oMath");
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("encode", xmlText);
|
||||
String post = HttpRequest.post(mathToImgUrl)
|
||||
.header(Header.CONTENT_TYPE, "application/json")
|
||||
.body(xmlText)
|
||||
.execute().body();
|
||||
//String post = HttpUtil.post(mathToImgUrl, map);
|
||||
if (messageList.size() > 0) {
|
||||
addItermsMathImage(messageList.get(messageList.size() - 1), itemValList, post);
|
||||
}
|
||||
}
|
||||
else if (child instanceof CTOMathPara) {
|
||||
CTOMathPara ctoMathPara = (CTOMathPara) child;
|
||||
String xmlText = ctoMathPara.xmlText().replaceAll("xml-fragment","m:oMath");;
|
||||
Map<String,Object> map = new HashMap<>();
|
||||
map.put("encode",xmlText);
|
||||
String post = HttpRequest.post(mathToImgUrl)
|
||||
.header(Header.CONTENT_TYPE, "application/json")
|
||||
.body(xmlText)
|
||||
.execute().body();
|
||||
//String post = HttpUtil.post(mathToImgUrl, map);
|
||||
if (messageList.size() > 0) {
|
||||
addItermsMathImage(messageList.get(messageList.size() - 1), itemValList, post);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (XWPFRun xwrun : p.getRuns()) {
|
||||
@@ -940,7 +946,8 @@ public class FileSpiltService {
|
||||
String filepathandname = filePathCos + "/" + imageName;
|
||||
try {
|
||||
String path = splitUrl+imageName;
|
||||
MinioUtil.uploadByte(bytev, filepathandname);
|
||||
// MinioUtil.uploadByte(bytev, filepathandname);
|
||||
ObsBootUtil.upload(new ByteArrayInputStream(bytev), filepathandname);
|
||||
String imgCon = path;
|
||||
String imgConVal = "<img class=\"wordImg\" style=\"width:100%;height:100%\" src=\"" + path + "\">";
|
||||
message.getItemsCondi().add(imgConVal);
|
||||
@@ -961,7 +968,8 @@ public class FileSpiltService {
|
||||
String filepathandname = filePathCos + "/" + imageName;
|
||||
try {
|
||||
String path = splitUrl+imageName;
|
||||
MinioUtil.uploadByte(bytev, filepathandname);
|
||||
// MinioUtil.uploadByte(bytev, filepathandname);
|
||||
ObsBootUtil.upload(new ByteArrayInputStream(bytev), filepathandname);
|
||||
String imgCon = path;
|
||||
String imgConVal = "<img class=\"wordImg\" style=\"width:100%;height:100%\" src=\"" + path + "\">";
|
||||
stringBuilder.append(imgConVal);
|
||||
@@ -1118,11 +1126,11 @@ public class FileSpiltService {
|
||||
}
|
||||
OSSFile ossFile = ossFileList.get(0);
|
||||
String readFilePath = ossFile.getUrl();
|
||||
if (org.apache.commons.lang.StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) {
|
||||
if (org.apache.commons.lang.StringUtils.isEmpty(readFilePath)) {
|
||||
throw new JeroBootException("当前文件未找到,请重新选择!");
|
||||
}
|
||||
try (InputStream is = MinioUtil.download(readFilePath)) {
|
||||
|
||||
// try (InputStream is = MinioUtil.download(readFilePath)) {
|
||||
try (InputStream is = ObsBootUtil.getOssFile(readFilePath)) {
|
||||
// InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。
|
||||
XWPFDocument doc = new XWPFDocument(is);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user