refactor(全局): 整理框架

This commit is contained in:
yjz
2024-06-05 10:24:54 +08:00
parent f4216bc77d
commit 7c6a6d7ac2
309 changed files with 262 additions and 29466 deletions
@@ -6,7 +6,6 @@ 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.api.PushWorkflowIntegrationAPI;
import com.jero.common.api.dto.message.HiworkTodoAdd;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.system.vo.LoginUser;
@@ -160,13 +159,13 @@ public class MyGlobalEventListener implements ActivitiEventListener {
processAllService.update(updateWrapper);
// 对接统一平台生成待办任务
PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class);
// PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class);
List<HiworkTodoAdd> list = new ArrayList<>();
HiworkTodoAdd hiworkTodoAdd = new HiworkTodoAdd();
hiworkTodoAdd.setRecordId(approvalRecord.getId());
hiworkTodoAdd.setProcessDefinitionId(processDefinitionId);
list.add(hiworkTodoAdd);
pushWorkflowIntegrationAPI.sendTodoTask(list);
// pushWorkflowIntegrationAPI.sendTodoTask(list);
}
private void taskAssigned(ActivitiEvent event) {
@@ -189,24 +188,24 @@ public class MyGlobalEventListener implements ActivitiEventListener {
if (!Objects.equals(assignee,userId)) {
log.info(""+userId+"转办给"+assignee);
// 对接统一平台生成完成任务
PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class);
// PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class);
List<HiworkTodoAdd> list = new ArrayList<>();
HiworkTodoAdd hiworkTodoAdd = new HiworkTodoAdd();
hiworkTodoAdd.setRecordId(approvalRecord.getId());
hiworkTodoAdd.setType("2");
hiworkTodoAdd.setProcessDefinitionId(processDefinitionId);
list.add(hiworkTodoAdd);
pushWorkflowIntegrationAPI.sendTodoTask(list);
// pushWorkflowIntegrationAPI.sendTodoTask(list);
// 对接统一平台生成办结
pushWorkflowIntegrationAPI.sendActivityComplete(list);
// pushWorkflowIntegrationAPI.sendActivityComplete(list);
// 生成被转办人的待办
list.clear();
hiworkTodoAdd.setToUserId(assignee);
hiworkTodoAdd.setType("1");
list.add(hiworkTodoAdd);
pushWorkflowIntegrationAPI.sendTodoTask(list);
// pushWorkflowIntegrationAPI.sendTodoTask(list);
}
}
@@ -284,16 +283,16 @@ public class MyGlobalEventListener implements ActivitiEventListener {
processAllService.update(updateWrapper);
// 对接统一平台生成完成任务
PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class);
// PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class);
List<HiworkTodoAdd> list = new ArrayList<>();
HiworkTodoAdd hiworkTodoAdd = new HiworkTodoAdd();
hiworkTodoAdd.setRecordId(approvalRecord.getId());
hiworkTodoAdd.setProcessDefinitionId(processDefinitionId);
list.add(hiworkTodoAdd);
pushWorkflowIntegrationAPI.sendTodoTask(list);
// pushWorkflowIntegrationAPI.sendTodoTask(list);
// 对接统一平台生成办结
pushWorkflowIntegrationAPI.sendActivityComplete(list);
// pushWorkflowIntegrationAPI.sendActivityComplete(list);
}
private void activityComplete(ActivitiEvent event) {
@@ -1,379 +0,0 @@
package com.jero.modules.activiti.process.aspect;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.constant.enums.LanguageEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.MessageUtils;
import com.jero.common.util.SnowflakeUtils;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.entity.ProcessNode;
import com.jero.modules.activiti.enums.CommitFlagEnum;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.enums.VariableTypeEnum;
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.esinspectdelayapply.common.EsInspectDelayApplyCommon;
import com.jero.modules.activiti.process.esinspectdelayapply.entity.ProcessEsInspectDelayApply;
import com.jero.modules.activiti.process.esinspectdelayapply.service.IProcessEsInspectDelayApplyService;
import com.jero.modules.activiti.process.esinspectplan.common.EsInspectPlanCommon;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeService;
import com.jero.modules.activiti.util.SpringContextUtil;
import lombok.extern.slf4j.Slf4j;
import org.activiti.bpmn.model.Process;
import org.activiti.bpmn.model.UserTask;
import org.activiti.engine.HistoryService;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.BeanUtils;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
/**
* @ClassName: 流程aop
* @Description:
* @Author: yjz
* @Date: 2023-12-07 15:45
* @Version: 1.0
**/
@Aspect
@Component
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
public class ProcessAspect {
@Resource
private TaskService taskService;
@Resource
private HistoryService historyService;
@Resource
private RepositoryService repositoryService;
@Resource
private ProcessApprovalRecordService processApprovalRecordService;
@Resource
private ProcessDraftService processDraftService;
@Resource
private RuntimeService runtimeService;
@Resource
private ProcessAllService processAllService;
@Resource
private ProcessNodeService processNodeService;
private static final String PROCESS_ALL = "processAll";
private static final List<String> SPECIAL_NODE = Arrays.asList(EsInspectPlanCommon.PROCESS_NODE_3);
private static final String SAVE_BY_DRAFT = "2";
/**
* 强制撤回
*/
private static final String REVOCATION = "3";
// 流程发起
@Pointcut("execution(public * com.jero.modules.activiti.process..*Controller.flowStart(..))")
public void processServiceFlowStart() {
}
// 流程保存
@Pointcut("execution(public * com.jero.modules.activiti.process..*Controller.flowSave(..))")
public void processServiceFlowSave() {
}
// 流程审批
@Pointcut("execution(public * com.jero.modules.activiti.process..*Controller.flowApproval(..))")
public void processServiceFlowApproval() {
}
// 流程转办
@Pointcut("execution(public * com.jero.modules.activiti.process..*Controller.flowTransfer(..))")
public void processServiceFlowTransfer() {
}
// 流程驳回
@Pointcut("execution(public * com.jero.modules.activiti.process..*Controller.flowReject(..))")
public void processServiceFlowReject() {
}
@Before("processServiceFlowApproval() || processServiceFlowReject()")
public void doBefore(JoinPoint jp) {
log.info("==========流程合法性校验前置方法开始==========");
if (!Objects.isNull(jp.getArgs())) {
Map<String, Objects> map = JSON.parseObject(JSON.toJSONString(jp.getArgs()[0]), Map.class);
Object object = map.get(PROCESS_ALL);
ProcessAll processAll = JSON.parseObject(JSON.toJSONString(object), ProcessAll.class);
if (checkTaskExistence(processAll.getTaskId())){
if (LanguageEnum.CN.getValue().equals(MessageUtils.getLanguage().getValue())){
throw new JeroBootException("任务不存在!");
}else {
throw new JeroBootException("The task does not exist!");
}
}
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (!getTaskAssignee(processAll.getTaskId()).equals(loginUser.getId())){
if (LanguageEnum.CN.getValue().equals(MessageUtils.getLanguage().getValue())){
throw new JeroBootException("非当前节点处理人!");
}else {
throw new JeroBootException("Not the current node processor!");
}
}
}
log.info("==========流程合法性校验前置方法结束==========");
}
@Before("processServiceFlowReject()")
public void doBeforeCountersignReject(JoinPoint jp){
log.info("==========流程会签节点驳回一票否决前置方法开始==========");
if (!Objects.isNull(jp.getArgs())) {
Map<String, Objects> map = JSON.parseObject(JSON.toJSONString(jp.getArgs()[0]), Map.class);
Object object = map.get(PROCESS_ALL);
ProcessAll processAll = JSON.parseObject(JSON.toJSONString(object), ProcessAll.class);
Object objectMap = map.get("map");
Map<String, Object> stringObjectMap = JSON.parseObject(JSON.toJSONString(objectMap), Map.class);
if ((stringObjectMap.containsKey("pass") && !(boolean) stringObjectMap.get("pass")) && isMultiTask(processAll.getTaskId())){
// 所有会签人数
Integer all = (Integer) taskService.getVariable(processAll.getTaskId(), "nrOfInstances");
taskService.setVariable(processAll.getTaskId(), "nrOfCompletedInstances", all);
// 其他会签人员审批信息,更新状态为未处理
processApprovalRecordService.update(
new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getProcessInstanceId, processAll.getProcessInstanceId())
.eq(ProcessApprovalRecord::getNodeId, processAll.getNodeId())
.isNull(ProcessApprovalRecord::getEndTime)
.ne(ProcessApprovalRecord::getTaskId, processAll.getTaskId())
.set(ProcessApprovalRecord::getCommitText, CommitFlagEnum.UNDISPOSED.getName())
.set(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.SUSPEND.getValue()));
}
}
log.info("==========流程会签节点驳回一票否决前置方法结束==========");
}
@AfterReturning("processServiceFlowReject()")
@Order(1)
public void doAfter(JoinPoint jp) {
log.info("==========流程驳回,若驳回到的节点之前经过转办,则驳回到转办人手里后置方法开始==========");
if (!Objects.isNull(jp.getArgs())) {
Map<String, Objects> map = JSON.parseObject(JSON.toJSONString(jp.getArgs()[0]), Map.class);
Object object = map.get(PROCESS_ALL);
ProcessAll processAll = JSON.parseObject(JSON.toJSONString(object), ProcessAll.class);
Object objectMap = map.get("map");
Map<String, Object> stringObjectMap = JSON.parseObject(JSON.toJSONString(objectMap), Map.class);
// 特殊节点排除
if ((stringObjectMap.containsKey("pass") && !(boolean) stringObjectMap.get("pass")) && !SPECIAL_NODE.contains(processAll.getNodeId())){
// 驳回的节点
List<ProcessApprovalRecord> processApprovalRecordList = processApprovalRecordService.list(
new LambdaQueryWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getProcessInstanceId, processAll.getProcessInstanceId())
.orderByDesc(ProcessApprovalRecord::getCreateTime));
if (!processApprovalRecordList.isEmpty()){
ProcessApprovalRecord processApprovalRecord = processApprovalRecordList.get(0);
processApprovalRecordList.remove(0);
Optional<ProcessApprovalRecord> optional = processApprovalRecordList.stream().filter(v ->
v.getTaskName().equals(processApprovalRecord.getTaskName())
&& v.getNodeId().equals(processApprovalRecord.getNodeId())).findFirst();
optional.ifPresent(v -> {
// 是否转办过
if (StringUtils.isNotBlank(v.getTransferBy())){
// 转办给转办人
taskService.setAssignee(processApprovalRecord.getTaskId(), v.getUserId());
// 更新流程审批记录表
processApprovalRecordService.update(
new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getTaskId, processApprovalRecord.getTaskId())
.set(ProcessApprovalRecord::getUserId, v.getUserId())
.set(ProcessApprovalRecord::getOriginUserId, v.getUserId()));
}
});
}
}
}
log.info("==========流程驳回,若驳回到的节点之前经过转办,则驳回到转办人手里后置方法结束==========");
}
@AfterReturning("processServiceFlowSave() || processServiceFlowStart()")
public void doAfterFlowSave(JoinPoint jp) {
log.info("==========流程保存到草稿后置方法开始==========");
if (!Objects.isNull(jp.getArgs())) {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
Map<String, Objects> map = JSON.parseObject(JSON.toJSONString(jp.getArgs()[0]), Map.class);
Object processApprovalRecordObject = map.get("processApprovalRecord");
String infoJsonStr = String.valueOf(map.get("infoJsonStr"));
String saveSource = String.valueOf(map.get("saveSource"));
Object processAllObject = map.get(PROCESS_ALL);
if (!Objects.isNull(processApprovalRecordObject) && !Objects.isNull(processAllObject)){
ProcessApprovalRecord processApprovalRecord = JSON.parseObject(JSON.toJSONString(processApprovalRecordObject), ProcessApprovalRecord.class);
ProcessAll processAll = JSON.parseObject(JSON.toJSONString(processAllObject), ProcessAll.class);
if (StringUtils.isBlank(processAll.getNodeId()) || SAVE_BY_DRAFT.equals(saveSource)){
ProcessDraft processDraft = new ProcessDraft();
setProperty(loginUser, infoJsonStr, processApprovalRecord, processAll, processDraft);
// 删除旧草稿
processDraftService.remove(new LambdaQueryWrapper<ProcessDraft>()
.eq(ProcessDraft::getProjectId, processAll.getProjectId())
.eq(ProcessDraft::getUserId, loginUser.getId()));
// 保存新草稿
processDraftService.save(processDraft);
// 保存新草稿(强制撤回用)
processDraft.setId(String.valueOf(SnowflakeUtils.snowflake()));
processDraft.setSaveSource(REVOCATION);
processDraft.setInfoJsonStr(processDraft.getInfoJsonStr().replaceFirst("\\{", "{\"revocation\": true,"));
processDraftService.save(processDraft);
if (jp.getSignature().getName().equals("flowStart")){
// 发起后删除草稿
processDraftService.remove(new LambdaQueryWrapper<ProcessDraft>()
.eq(ProcessDraft::getProjectId, processAll.getProjectId())
.eq(ProcessDraft::getUserId, loginUser.getId())
.and(qw -> qw.ne(ProcessDraft::getSaveSource, REVOCATION)
.or().isNull(ProcessDraft::getSaveSource)));
}
}
}
}
log.info("==========流程保存到草稿后置方法结束==========");
}
@AfterReturning("processServiceFlowStart() || processServiceFlowApproval() || processServiceFlowReject()")
public void doAfterRemoveDraft(JoinPoint jp) {
log.info("==========流程发起、审批、驳回。删除草稿后置方法开始==========");
if (!Objects.isNull(jp.getArgs())) {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
Map<String, Objects> map = JSON.parseObject(JSON.toJSONString(jp.getArgs()[0]), Map.class);
Object object = map.get(PROCESS_ALL);
if (!Objects.isNull(object)){
// 发起、审批、驳回
ProcessAll processAll = JSON.parseObject(JSON.toJSONString(object), ProcessAll.class);
// 删除草稿
processDraftService.remove(new LambdaQueryWrapper<ProcessDraft>()
.eq(ProcessDraft::getProjectId, processAll.getProjectId())
.eq(ProcessDraft::getUserId, loginUser.getId())
.and(qw -> qw.ne(ProcessDraft::getSaveSource, REVOCATION)
.or().isNull(ProcessDraft::getSaveSource)));
}
}
log.info("==========流程发起、审批、驳回。删除草稿后置方法结束==========");
}
@AfterReturning("processServiceFlowTransfer()")
public void doAfterFlowTransfer(JoinPoint jp) {
log.info("==========流程转办后置方法开始==========");
if (!Objects.isNull(jp.getArgs())) {
String taskId = JSON.parseObject(JSON.toJSONString(jp.getArgs()[0]), String.class);
String toUserId = JSON.parseObject(JSON.toJSONString(jp.getArgs()[1]), String.class);
ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getToDoByTaskId(taskId);
String processInstanceId = processApprovalRecord.getProcessInstanceId();
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
TaskService taskService = SpringContextUtil.getBean(TaskService.class);
Task task = taskService.createTaskQuery().taskId(processApprovalRecord.getTaskId()).singleResult();
// 查询节点信息
ProcessNode processNode = processNodeService.getOne(
new LambdaQueryWrapper<ProcessNode>()
.eq(ProcessNode::getProcessDefinitionId, processAll.getProcessDefinitionId())
.eq(ProcessNode::getXmlNodeId, processApprovalRecord.getNodeId()));
if (!Objects.isNull(processNode) && VariableTypeEnum.STRING.getName().equals(processNode.getVariableType())){
runtimeService.setVariable(task.getExecutionId(), processNode.getVariableName(), toUserId);
}
// 稽查延期申请流程 稽查联络人评估 节点特殊处理
if (ProcessTypeEnum.ES_INSPECT_DELAY_APPLY.getValue().equals(processAll.getPrcType())
&& EsInspectDelayApplyCommon.PROCESS_NODE_3.equals(processApprovalRecord.getNodeId())){
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
IProcessEsInspectDelayApplyService processEsInspectDelayApplyService = SpringContextUtil.getBean(IProcessEsInspectDelayApplyService.class);
processEsInspectDelayApplyService.update(
new LambdaUpdateWrapper<ProcessEsInspectDelayApply>()
.eq(ProcessEsInspectDelayApply::getProjectId, processAll.getProjectId())
.eq(ProcessEsInspectDelayApply::getLiaisons, loginUser.getId())
.set(ProcessEsInspectDelayApply::getLiaisons, toUserId));
}
}
log.info("==========流程转办后置方法结束==========");
}
private static void setProperty(LoginUser loginUser, String infoJsonStr, ProcessApprovalRecord processApprovalRecord, ProcessAll processAll, ProcessDraft processDraft) {
// 属性拷贝
BeanUtils.copyProperties(processAll, processDraft);
processDraft.setCreateBy("");
processDraft.setId("");
processDraft.setUpdateBy("");
Date date = new Date();
if (Objects.isNull(processAll.getCreateTime())){
processDraft.setCreateTime(date);
}else {
processDraft.setCreateTime(processAll.getCreateTime());
}
processDraft.setUpdateBy("");
processDraft.setUpdateTime(date);
// 保存草稿表
if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(processApprovalRecord.getCommitFile())){
processDraft.setHandleFile(processApprovalRecord.getCommitFile());
}
if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(processApprovalRecord.getCommitText())){
processDraft.setHandleText(processApprovalRecord.getCommitText());
}
if (!Objects.isNull(processAll.getDueTime())){
processDraft.setProcessDueDate(processAll.getDueTime());
}
if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(processAll.getPrcMes())){
processDraft.setProcessDescription(processAll.getPrcMes());
}
if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(infoJsonStr)){
processDraft.setInfoJsonStr(infoJsonStr);
}
processDraft.setUserId(loginUser.getId());
}
/**
* 是否会签节点
* @param taskId
* @return
*/
public boolean isMultiTask(String taskId){
// 根据流程实例id查询
Task task = taskService.createTaskQuery()
.taskId(taskId)
.singleResult();
// 获取流程实例对象
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
.processInstanceId(task.getProcessInstanceId())
.singleResult();
// 获取流程定义对象,主要用于判断流程任务结点是否为会签结点
Process process = repositoryService.getBpmnModel(historicProcessInstance.getProcessDefinitionId())
.getProcessById(historicProcessInstance.getProcessDefinitionKey());
// 获取当前任务结点
Optional<UserTask> userTask = process.getFlowElements().stream()
.filter(flowElement -> task.getTaskDefinitionKey().equals(flowElement.getId()))
.map(UserTask.class::cast)
.findAny();
return userTask.isPresent() && !Objects.isNull(userTask.get().getLoopCharacteristics());
}
public boolean checkTaskExistence(String taskId) {
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
return Objects.isNull(task);
}
public String getTaskAssignee(String taskId) {
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
return task.getAssignee();
}
}
@@ -1,12 +1,10 @@
package com.jero.modules.activiti.process.common.service;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.api.vo.ResultCommon;
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.CommitFlagEnum;
@@ -17,14 +15,8 @@ import com.jero.modules.activiti.process.common.entity.CommonVO;
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.entity.StandTypeVO;
import com.jero.modules.activiti.process.common.enums.StandardStateEnum;
import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO;
import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO;
import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.laws.common.util.CurrentUserUtil;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
@@ -40,7 +32,6 @@ import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.apache.shiro.SecurityUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -77,9 +68,6 @@ public class ActFlowCommonService {
@Resource
private ProcessDraftService processDraftService;
@Resource
private IProcessHandleService processHandleService;
@Resource
private ILawsEnterpriseStandardService esService;
@@ -249,7 +237,6 @@ public class ActFlowCommonService {
* 转办
*/
public void transfer(String taskId, String toUserId) {
processHandleService.transfer(taskId, toUserId);
}
/**
@@ -484,56 +471,15 @@ public class ActFlowCommonService {
* @param jsonData
*/
public void saveFirstNodeDraft(CommonVO common, ProcessTypeEnum processTypeEnum, Object data) {
ProcessInfoVO processInfoVo = this.getProcessInfoVo(common, processTypeEnum, data);
processHandleService.saveToDraft(processInfoVo);
}
public void saveFirstNodeDraft(CommonVO common, ProcessTypeEnum processTypeEnum, String jsonData) {
ProcessInfoVO processInfoVo = this.getProcessInfoVo(common, processTypeEnum, jsonData);
processHandleService.saveToDraft(processInfoVo);
}
public void saveFirstNodeDraftCustomUserId(CommonVO common, ProcessTypeEnum processTypeEnum, String jsonData, String userId) {
ProcessInfoVO processInfoVo = this.getProcessInfoVo(common, processTypeEnum, jsonData);
processHandleService.saveToDraftCustomUserId(processInfoVo, userId);
}
private ProcessInfoVO getProcessInfoVo(CommonVO common, ProcessTypeEnum processTypeEnum, Object data) {
// 将archiveData转为Json
String dataJson = JSON.toJSONString(data);
ProcessInfoVO<ESArchiveDataVO> processInfoVO = new ProcessInfoVO<>();
processInfoVO.setSaveSource(DraftCommon.INITIAL_SOURCE);
BasicTaskInfoDTO basicTaskInfoDTO = new BasicTaskInfoDTO();
basicTaskInfoDTO.setHandleFile(common.getCommitFile());
basicTaskInfoDTO.setHandleText(common.getCommitText());
BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO();
basicProcessInfoDTO.setProcessName(common.getPrcName());
basicProcessInfoDTO.setProcessDescription(common.getPrcMes());
basicProcessInfoDTO.setProcessType(processTypeEnum.getValue());
basicProcessInfoDTO.setProcessDueDate(common.getDueTime());
basicProcessInfoDTO.setProcessInstanceId(common.getProcessInstanceId());
processInfoVO.setInfoJsonStr(dataJson);
processInfoVO.setBasicTaskInfoDTO(basicTaskInfoDTO);
processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO);
return processInfoVO;
}
private ProcessInfoVO getProcessInfoVo(CommonVO common, ProcessTypeEnum processTypeEnum, String jsonData) {
ProcessInfoVO<ESArchiveDataVO> processInfoVO = new ProcessInfoVO<>();
processInfoVO.setSaveSource(DraftCommon.INITIAL_SOURCE);
BasicTaskInfoDTO basicTaskInfoDTO = new BasicTaskInfoDTO();
basicTaskInfoDTO.setHandleFile(common.getCommitFile());
basicTaskInfoDTO.setHandleText(common.getCommitText());
BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO();
basicProcessInfoDTO.setProcessName(common.getPrcName());
basicProcessInfoDTO.setProcessDescription(common.getPrcMes());
basicProcessInfoDTO.setProcessType(processTypeEnum.getValue());
basicProcessInfoDTO.setProcessDueDate(common.getDueTime());
basicProcessInfoDTO.setProcessInstanceId(common.getProcessInstanceId());
processInfoVO.setInfoJsonStr(jsonData);
processInfoVO.setBasicTaskInfoDTO(basicTaskInfoDTO);
processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO);
return processInfoVO;
}
public void checkStandardState(String standardId) {
@@ -1,28 +0,0 @@
package com.jero.modules.activiti.process.esdeclare.common;
/**
* @ClassName: EsDeclareCommon
* @Description:
* @Author: yjz
* @Date: 2023-11-30 09:56
* @Version: 1.0
**/
public class EsDeclareCommon {
private EsDeclareCommon(){
}
/**
* 标准宣贯流程key
*/
public static final String KEY = "standard_declare";
/**
* 标准宣贯流程name
*/
public static final String NAME = "标准宣贯流程";
/**
* 标准宣贯流程节点: 1:发起人发起
*/
public static final String PROCESS_NODE_1 = "initiator_start";
}
@@ -1,92 +0,0 @@
package com.jero.modules.activiti.process.esdeclare.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation;
import com.jero.common.util.MessageUtils;
import com.jero.common.util.SnowflakeUtils;
import com.jero.modules.activiti.process.esdeclare.service.IEsDeclareFlowService;
import com.jero.modules.activiti.process.esdeclare.vo.EsDeclareFlowVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.TaskService;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* @ClassName: EsDeclareController
* @Description:
* @Author: yjz
* @Date: 2023-11-30 09:58
* @Version: 1.0
**/
@Api(tags="标准宣贯流程")
@RestController
@RequestMapping("/esinspect/esDeclareFlowController")
@Slf4j
public class EsDeclareFlowController {
private final IEsDeclareFlowService esDeclareFlowService;
public EsDeclareFlowController(IEsDeclareFlowService esDeclareFlowService) {
this.esDeclareFlowService = esDeclareFlowService;
}
@Resource
private TaskService taskService;
/**
* 标准宣贯流程-生成项目id
* @return 项目id
*/
@AutoLog(value = "标准宣贯流程-生成项目id")
@ApiOperation(value="标准宣贯流程-生成项目id", notes="标准宣贯流程-生成项目id")
@GetMapping(value = "/getProjectId")
public String getProjectId() {
return String.valueOf(SnowflakeUtils.snowflake());
}
/**
* 标准宣贯流程-流程发起
* @param esDeclareFlowVO 标准宣贯流程VO对象
* @return 结果对象
*/
@AutoLog(value = "标准宣贯流程-流程发起")
@ApiOperation(value="标准宣贯流程-流程发起", notes="标准宣贯流程-流程发起")
@PostMapping(value = "/flowStart")
public Result<T> flowStart(@RequestBody EsDeclareFlowVO esDeclareFlowVO) {
esDeclareFlowService.flowStart(esDeclareFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 标准宣贯流程-办理详情
* @param projectId 项目id
* @return 结果对象
*/
@AutoLog(value = "标准宣贯流程-办理详情")
@ApiOperation(value="标准宣贯流程-办理详情", notes="标准宣贯流程-办理详情")
@GetMapping(value = "/queryDetailByProjectId")
@Translation
public Result<EsDeclareFlowVO> queryDetailByProjectId(@ApiParam("项目id") String projectId, @ApiParam("任务id") String taskId) {
return Result.OK(esDeclareFlowService.queryDetailByProjectId(projectId, taskId));
}
/**
* 标准宣贯流程-流程保存
* @param esDeclareFlowVO 标准宣贯流程VO对象
* @return 结果对象
*/
@AutoLog(value = "标准宣贯流程-流程保存")
@ApiOperation(value="标准宣贯流程-流程保存", notes="标准宣贯流程-流程保存")
@PostMapping(value = "/flowSave")
public Result<T> flowSave(@RequestBody EsDeclareFlowVO esDeclareFlowVO) {
esDeclareFlowService.flowSave(esDeclareFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
}
@@ -1,180 +0,0 @@
package com.jero.modules.activiti.process.esdeclare.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.system.base.controller.JeroController;
import com.jero.modules.activiti.process.esdeclare.entity.ProcessEsDeclare;
import com.jero.modules.activiti.process.esdeclare.service.IProcessEsDeclareService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* @Description: 标准宣贯业务表
* @Author: jero-boot
* @Date: 2023-11-30
* @Version: V1.0
*/
@Api(tags="标准宣贯业务表")
@RestController
@RequestMapping("/esdeclare/processEsDeclare")
@Slf4j
public class ProcessEsDeclareController extends JeroController<ProcessEsDeclare, IProcessEsDeclareService> {
@Autowired
private IProcessEsDeclareService processEsDeclareService;
/**
* 分页列表查询
*
* @param processEsDeclare
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "标准宣贯业务表-分页列表查询")
@ApiOperation(value="标准宣贯业务表-分页列表查询", notes="标准宣贯业务表-分页列表查询")
@GetMapping(value = "/page")
public Result<IPage<ProcessEsDeclare>> queryPageList(ProcessEsDeclare processEsDeclare,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
IPage<ProcessEsDeclare> pageList = processEsDeclareService.queryPage(processEsDeclare, pageNo, pageSize, req);
return Result.OK(pageList);
}
/**
* 列表查询
*
* @param processEsDeclare
* @param req
* @return
*/
@AutoLog(value = "标准宣贯业务表-列表查询")
@ApiOperation(value="标准宣贯业务表-列表查询", notes="标准宣贯业务表-列表查询")
@GetMapping(value = "/list")
public Result<List<ProcessEsDeclare>> queryList(ProcessEsDeclare processEsDeclare, HttpServletRequest req) {
List<ProcessEsDeclare> list = processEsDeclareService.queryList(processEsDeclare, req);
return Result.OK(list);
}
/**
* 添加
*
* @param processEsDeclare
* @return
*/
@AutoLog(value = "标准宣贯业务表-添加")
@ApiOperation(value="标准宣贯业务表-添加", notes="标准宣贯业务表-添加")
@PostMapping(value = "/add")
public Result<T> add(@Validated @RequestBody ProcessEsDeclare processEsDeclare) {
processEsDeclareService.add(processEsDeclare);
return Result.OK("操作成功!");
}
/**
* 编辑
*
* @param processEsDeclare
* @return
*/
@AutoLog(value = "标准宣贯业务表-编辑")
@ApiOperation(value="标准宣贯业务表-编辑", notes="标准宣贯业务表-编辑")
@PostMapping(value = "/edit")
public Result<T> edit(@Validated @RequestBody ProcessEsDeclare processEsDeclare) {
processEsDeclareService.editById(processEsDeclare);
return Result.OK("操作成功!");
}
/**
* 通过id删除
*
* @param map
* @return
*/
@AutoLog(value = "标准宣贯业务表-通过id删除")
@ApiOperation(value="标准宣贯业务表-通过id删除", notes="标准宣贯业务表-通过id删除")
@PostMapping(value = "/delete")
public Result<T> delete(@RequestBody Map<String, String> map) {
if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){
return Result.error("请选择数据!");
}
processEsDeclareService.deleteById(map.get("id"));
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param map
* @return
*/
@AutoLog(value = "标准宣贯业务表-批量删除")
@ApiOperation(value="标准宣贯业务表-批量删除", notes="标准宣贯业务表-批量删除")
@PostMapping(value = "/deleteBatch")
public Result<T> deleteBatch(@RequestBody Map<String, String> map) {
if(!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))){
return Result.error("请选择数据!");
}
this.processEsDeclareService.deleteByIds(Arrays.asList(map.get("ids").split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
@AutoLog(value = "标准宣贯业务表-通过id查询")
@ApiOperation(value="标准宣贯业务表-通过id查询", notes="标准宣贯业务表-通过id查询")
@GetMapping(value = "/queryById")
public Result<ProcessEsDeclare> queryById(@RequestParam(name="id",required=true) String id) {
ProcessEsDeclare processEsDeclare = processEsDeclareService.queryById(id);
if(processEsDeclare==null) {
return Result.error("未找到对应数据");
}
return Result.OK(processEsDeclare);
}
/**
* 通过项目id查询
*
* @param projectId
* @return
*/
@AutoLog(value = "标准宣贯业务表-通过项目id查询")
@ApiOperation(value="标准宣贯业务表-通过项目id查询", notes="标准宣贯业务表-通过项目id查询")
@GetMapping(value = "/queryByProjectId")
public Result<ProcessEsDeclare> queryByProjectId(String projectId) {
ProcessEsDeclare processEsDeclare = processEsDeclareService.queryByProjectId(projectId);
if(processEsDeclare==null) {
return Result.error("未找到对应数据");
}
return Result.OK(processEsDeclare);
}
/**
* 导出excel
*
* @param request
* @param processEsDeclare
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, ProcessEsDeclare processEsDeclare) {
return super.exportXls(request, processEsDeclare, ProcessEsDeclare.class, "标准宣贯业务表");
}
}
@@ -1,94 +0,0 @@
package com.jero.modules.activiti.process.esdeclare.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import com.jero.modules.laws.documenttool.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
/**
* @Description: 企标宣贯业务表
* @Author: jero-boot
* @Date: 2023-11-30
* @Version: V1.0
*/
@Data
@TableName("process_es_declare")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="process_es_declare对象", description="企标宣贯业务表")
public class ProcessEsDeclare extends BaseEntity {
/**企标id*/
@Excel(name = "企标id", width = 15)
@ApiModelProperty(value = "企标id")
@TableField(exist = false)
private java.lang.String standardId;
/**企标编号*/
@Excel(name = "企标编号", width = 15)
@ApiModelProperty(value = "企标编号")
private java.lang.String standardNo;
/**企标名称*/
@Excel(name = "企标名称", width = 15)
@ApiModelProperty(value = "企标名称")
@TableField(exist = false)
private java.lang.String standardName;
/**宣贯日期*/
@Excel(name = "宣贯日期", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "宣贯日期")
private java.util.Date declareDate;
/**宣贯人*/
@Excel(name = "宣贯人", width = 15)
@ApiModelProperty(value = "宣贯人")
@Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
private java.lang.String declareUser;
/**宣贯人 翻译*/
@ApiModelProperty(value = "宣贯人 翻译")
@TableField(exist = false)
private java.lang.String declareUserDictText;
/**主题*/
@Excel(name = "主题", width = 15)
@ApiModelProperty(value = "主题")
private java.lang.String declareTopic;
/**相关材料*/
@Excel(name = "相关材料", width = 15)
@ApiModelProperty(value = "相关材料")
private java.lang.String declareFile;
/**内容*/
@Excel(name = "内容", width = 15)
@ApiModelProperty(value = "内容")
private java.lang.String declareContent;
/**主送部门*/
@Excel(name = "主送部门", width = 15)
@ApiModelProperty(value = "主送部门")
private java.lang.String mainDepart;
/**参宣单位*/
@Excel(name = "参宣单位", width = 15)
@ApiModelProperty(value = "参宣单位")
private java.lang.String attendUnit;
/**联络人*/
@ApiModelProperty(value = "联络人")
private java.lang.String initiator;
/**联络人 翻译*/
@ApiModelProperty(value = "联络人 翻译")
@TableField(exist = false)
private java.lang.String initiatorDictText;
/**紧急程度(1:一般 2:急)*/
@Excel(name = "紧急程度(1:一般 2:急)", width = 15)
@ApiModelProperty(value = "紧急程度(1:一般 2:急)")
@Dict(dicCode = "emergency_degree")
private java.lang.String emergencyDegree;
/**项目id*/
@Excel(name = "项目id", width = 15)
@ApiModelProperty(value = "项目id")
private java.lang.String projectId;
}
@@ -1,14 +0,0 @@
package com.jero.modules.activiti.process.esdeclare.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.modules.activiti.process.esdeclare.entity.ProcessEsDeclare;
/**
* @Description: 企标宣贯业务表
* @Author: jero-boot
* @Date: 2023-11-30
* @Version: V1.0
*/
public interface ProcessEsDeclareMapper extends BaseMapper<ProcessEsDeclare> {
}
@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.activiti.process.esdeclare.mapper.ProcessEsDeclareMapper">
</mapper>
@@ -1,32 +0,0 @@
package com.jero.modules.activiti.process.esdeclare.service;
import com.jero.modules.activiti.process.esdeclare.vo.EsDeclareFlowVO;
/**
* @InterfaceName: IEsDeclareService
* @Description:
* @Author: yjz
* @Date: 2023-11-30 10:11
* @Version: 1.0
**/
public interface IEsDeclareFlowService {
/**
* 标准宣贯流程-流程发起
* @param esDeclareFlowVO
*/
void flowStart(EsDeclareFlowVO esDeclareFlowVO);
/**
* 标准宣贯流程-流程保存
* @param esDeclareFlowVO
*/
void flowSave(EsDeclareFlowVO esDeclareFlowVO);
/**
* 标准宣贯流程-办理详情
* @param projectId
* @param taskId
* @return
*/
EsDeclareFlowVO queryDetailByProjectId(String projectId, String taskId);
}
@@ -1,84 +0,0 @@
package com.jero.modules.activiti.process.esdeclare.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.activiti.process.esdeclare.entity.ProcessEsDeclare;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* @Description: 企标宣贯业务表
* @Author: jero-boot
* @Date: 2023-11-30
* @Version: V1.0
*/
public interface IProcessEsDeclareService extends IService<ProcessEsDeclare> {
/**
* 分页查询
*
* @param processEsDeclare
* @param pageNo
* @param pageSize
* @param req
* @return
*/
IPage<ProcessEsDeclare> queryPage(ProcessEsDeclare processEsDeclare, Integer pageNo, Integer pageSize, HttpServletRequest req);
/**
* 列表查询
*
* @param processEsDeclare
* @param req
* @return
*/
List<ProcessEsDeclare> queryList(ProcessEsDeclare processEsDeclare, HttpServletRequest req);
/**
* 保存
*
* @param processEsDeclare
* @return
*/
void add(ProcessEsDeclare processEsDeclare);
/**
* 更新
*
* @param processEsDeclare
* @return
*/
void editById(ProcessEsDeclare processEsDeclare);
/**
* 通过id删除
*
* @param id
* @return
*/
void deleteById(String id);
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
ProcessEsDeclare queryById(String id);
/**
* 标准宣贯业务表-通过项目id查询
* @param projectId
* @return
*/
ProcessEsDeclare queryByProjectId(String projectId);
}
@@ -1,39 +0,0 @@
package com.jero.modules.activiti.process.esdeclare.service.impl;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.WorkCenterService;
import com.jero.modules.activiti.util.SpringContextUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @ClassName: EsInspectPlanFlowService
* @Description:
* @Author: yjz
* @Date: 2024-01-11 21:19
* @Version: 1.0
**/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
@Service
public class EsDeclareFlow implements WorkCenterService {
/**
* 强制撤回
* @param processAll 流程总表
*/
@Override
public void changeToDraft(ProcessAll processAll) {
// 删除业务表数据
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
processAllService.physicalDeleteByProjectId("process_es_declare", processAll.getProjectId());
}
@Override
public void handleTransfer(ProcessAll processAll, ProcessApprovalRecord processApprovalRecord, String toUserId, String userId) {
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
processAllService.specialTransfer(processAll, processApprovalRecord, toUserId, userId);
}
}
@@ -1,264 +0,0 @@
package com.jero.modules.activiti.process.esdeclare.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.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.jero.common.api.dto.message.SendMessageDTO;
import com.jero.common.api.vo.SendMessageAPI;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.SnowflakeUtils;
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.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.esdeclare.common.EsDeclareCommon;
import com.jero.modules.activiti.process.esdeclare.entity.ProcessEsDeclare;
import com.jero.modules.activiti.process.esdeclare.service.IEsDeclareFlowService;
import com.jero.modules.activiti.process.esdeclare.service.IProcessEsDeclareService;
import com.jero.modules.activiti.process.esdeclare.vo.EsDeclareFlowVO;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardDeclare;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardDeclareService;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.system.service.ISysUserService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* @ClassName: EsDeclareServiceImpl
* @Description:
* @Author: yjz
* @Date: 2023-11-30 10:11
* @Version: 1.0
**/
@Service
@Transactional(rollbackFor = JeroBootException.class)
public class EsDeclareFlowServiceImpl implements IEsDeclareFlowService {
private final ProcessAllService processAllService;
private final ProcessApprovalRecordService processApprovalRecordService;
private final ProcessDraftService processDraftService;
private final ProcessNodeLinkService processNodeLinkService;
private final IProcessEsDeclareService processEsDeclareService;
private final EnterpriseStandardDeclareService enterpriseStandardDeclareService;
private final IOSSFileService ossFileService;
private final SendMessageAPI sendMessageAPI;
private final ISysUserService sysUserService;
public EsDeclareFlowServiceImpl(ProcessAllService processAllService,
ProcessApprovalRecordService processApprovalRecordService,
ProcessDraftService processDraftService,
ProcessNodeLinkService processNodeLinkService,
IProcessEsDeclareService processEsDeclareService,
EnterpriseStandardDeclareService enterpriseStandardDeclareService,
IOSSFileService ossFileService,
SendMessageAPI sendMessageAPI,
ISysUserService sysUserService) {
this.processAllService = processAllService;
this.processApprovalRecordService = processApprovalRecordService;
this.processDraftService = processDraftService;
this.processNodeLinkService = processNodeLinkService;
this.processEsDeclareService = processEsDeclareService;
this.enterpriseStandardDeclareService = enterpriseStandardDeclareService;
this.ossFileService = ossFileService;
this.sendMessageAPI = sendMessageAPI;
this.sysUserService = sysUserService;
}
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
@Resource
private TaskService taskService;
@Override
public void flowStart(EsDeclareFlowVO esDeclareFlowVO) {
// 流程信息
ProcessAll processAll = esDeclareFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esDeclareFlowVO.getProcessApprovalRecord();
// map(参数)
Map<String, Object> map = esDeclareFlowVO.getMap();
// 根据流程key启动流程 同时 设置审批人员参数
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey(EsDeclareCommon.KEY, map);
// 再次设置map
runtimeService.setVariables(processInstance.getId(), map);
// 保存业务表
ProcessEsDeclare processEsDeclares = esDeclareFlowVO.getProcessEsDeclare();
processEsDeclareService.saveOrUpdate(processEsDeclares);
// 更新流程总表信息
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setPrcType(Integer.valueOf(ProcessType.STANDARD_DECLARE.getValue()));
processAll.setPrcStatus(ProcessStatusEnum.INCOMPLETE.getValue());
DateTime date = DateUtil.date();
processAll.setPrcNum(DateUtil.format(date, DatePattern.PURE_DATETIME_MS_PATTERN));
processAll.setCreateUserId(loginUser.getId());
processAllService.update(processAll,
new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getProcessInstanceId, processInstance.getId()));
// 根据流程实例id查询
Task task = taskService.createTaskQuery()
.processInstanceId(processInstance.getId())
.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()));
// 新增流程实例节点关联用户表
processNodeLinkService.saveNodeUserLink(processInstance.getProcessDefinitionId(), processInstance.getId(), listToString(map));
// 自动完成第一个节点
taskService.complete(task.getId());
// 发起即结束
ProcessEsDeclare processEsDeclare = processEsDeclareService.queryByProjectId(processAll.getProjectId());
// 保存数据至企标宣贯
EnterpriseStandardDeclare enterpriseStandardDeclare = new EnterpriseStandardDeclare();
BeanUtils.copyProperties(processEsDeclare, enterpriseStandardDeclare);
enterpriseStandardDeclare.setCreateTime(null);
enterpriseStandardDeclare.setUpdateTime(null);
enterpriseStandardDeclareService.save(enterpriseStandardDeclare);
// 保存企标关联文件
if (!Objects.isNull(processEsDeclare.getDeclareFile()) && StringUtils.isNotBlank(enterpriseStandardDeclare.getStandardId())){
List<String> list = Arrays.asList(processEsDeclare.getDeclareFile().split(","));
ossFileService.update(
new LambdaUpdateWrapper<OSSFile>()
.in(OSSFile::getId, list)
.set(OSSFile::getStandardId, enterpriseStandardDeclare.getStandardId())
.set(OSSFile::getStandardNo, enterpriseStandardDeclare.getStandardNo())
.set(OSSFile::getStandardFileType, "associated_file"));
}
// 发送消息
SendMessageDTO sendMessageDTO = new SendMessageDTO();
sendMessageDTO.setTemplateCode(MessageTemplateCodeCommon.STANDARD_DECLARE);
sendMessageDTO.setToUserId(processEsDeclare.getInitiator());
Map<String, String> sendMap = new HashMap<>();
sendMap.put("standardNumber", processEsDeclare.getStandardNo());
sendMap.put("standardName", processEsDeclare.getStandardName());
sendMap.put("declareUser", sysUserService.dictByIdsOrUserNames(processEsDeclare.getDeclareUser(), ""));
sendMessageDTO.setMap(sendMap);
sendMessageAPI.sendMessage(sendMessageDTO);
}
@Override
public void flowSave(EsDeclareFlowVO esDeclareFlowVO) {
// 企标宣贯业务表
processEsDeclareService.saveOrUpdate(esDeclareFlowVO.getProcessEsDeclare());
// 流程信息
ProcessAll processAll = esDeclareFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esDeclareFlowVO.getProcessApprovalRecord();
// 更新流程信息
processAllService.update(new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getId, processAll.getId())
.set(ProcessAll::getPrcName, processAll.getPrcName())
.set(ProcessAll::getPrcMes, processAll.getPrcMes())
.set(ProcessAll::getDueTime, processAll.getDueTime()));
// 更新流程审批信息
processApprovalRecordService.update(new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getTaskId, processAll.getTaskId())
.set(ProcessApprovalRecord::getCommitText, processApprovalRecord.getCommitText())
.set(ProcessApprovalRecord::getCommitFile, processApprovalRecord.getCommitFile()));
}
@Override
public EsDeclareFlowVO queryDetailByProjectId(String projectId, String taskId) {
EsDeclareFlowVO esDeclareFlowVO = new EsDeclareFlowVO();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId)
.orderByDesc(ProcessAll::getCreateTime), false);
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
// 是否存在草稿
List<ProcessDraft> processDraftList = processDraftService.list(new LambdaQueryWrapper<ProcessDraft>()
.eq(ProcessDraft::getProjectId, projectId)
.eq(ProcessDraft::getUserId, loginUser.getId())
.and(qw -> qw.ne(ProcessDraft::getSaveSource, "3")
.or().isNull(ProcessDraft::getSaveSource)));
if (!processDraftList.isEmpty()){
String id = "";
if(Objects.isNull(processAll)){
processAll = new ProcessAll();
id = String.valueOf(SnowflakeUtils.snowflake());
}else {
id = processAll.getId();
}
// 存在草稿
ProcessDraft processDraft = processDraftList.get(0);
// 属性拷贝
BeanUtils.copyProperties(processDraft, processAll);
processAll.setId(id);
if (StringUtils.isNotBlank(processDraft.getHandleFile())){
processApprovalRecord.setCommitFile(processDraft.getHandleFile());
}
if (StringUtils.isNotBlank(processDraft.getHandleText())){
processApprovalRecord.setCommitText(processDraft.getHandleText());
}
if (!Objects.isNull(processDraft.getProcessDueDate())){
processAll.setDueTime(processDraft.getProcessDueDate());
}
if (StringUtils.isNotBlank(processDraft.getProcessDescription())){
processAll.setPrcMes(processDraft.getProcessDescription());
}
if (StringUtils.isNotBlank(processDraft.getInfoJsonStr())){
esDeclareFlowVO.setInfoJsonStr(processDraft.getInfoJsonStr());
}
}else {
// 不存在草稿
processApprovalRecord = processApprovalRecordService.getOne(new LambdaQueryWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getUserId, loginUser.getId())
.eq(StringUtils.isNotBlank(taskId), ProcessApprovalRecord::getTaskId, taskId)
, false);
}
esDeclareFlowVO.setProcessAll(processAll);
esDeclareFlowVO.setProcessApprovalRecord(processApprovalRecord);
return esDeclareFlowVO;
}
private Map<String, Object> listToString(Map<String, Object> map) {
Map<String, Object> stringObjectHashMap;
stringObjectHashMap = map.entrySet().stream().map(v -> {
if (v.getValue() instanceof List) {
List<String> list = (List<String>)v.getValue();
v.setValue(String.join(",", list));
}
return v;
}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
return stringObjectHashMap;
}
}
@@ -1,156 +0,0 @@
package com.jero.modules.activiti.process.esdeclare.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.activiti.process.esdeclare.entity.ProcessEsDeclare;
import com.jero.modules.activiti.process.esdeclare.mapper.ProcessEsDeclareMapper;
import com.jero.modules.activiti.process.esdeclare.service.IProcessEsDeclareService;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.laws.system.service.ILawsContactManageService;
import com.jero.modules.system.service.ISysUserService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* @Description: 企标宣贯业务表
* @Author: jero-boot
* @Date: 2023-11-30
* @Version: V1.0
*/
@Service
@Transactional(rollbackFor = JeroBootException.class)
public class ProcessEsDeclareServiceImpl extends ServiceImpl<ProcessEsDeclareMapper, ProcessEsDeclare> implements IProcessEsDeclareService {
private final ISysUserService sysUserService;
private final ILawsEnterpriseStandardService lawsEnterpriseStandardService;
private final ILawsContactManageService lawsContactManageService;
public ProcessEsDeclareServiceImpl(ISysUserService sysUserService,
ILawsEnterpriseStandardService lawsEnterpriseStandardService,
ILawsContactManageService lawsContactManageService) {
this.sysUserService = sysUserService;
this.lawsEnterpriseStandardService = lawsEnterpriseStandardService;
this.lawsContactManageService = lawsContactManageService;
}
/**
* 分页查询
*
* @param processEsDeclare
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@Override
public IPage<ProcessEsDeclare> queryPage(ProcessEsDeclare processEsDeclare, Integer pageNo, Integer pageSize,
HttpServletRequest req) {
QueryWrapper<ProcessEsDeclare> queryWrapper = QueryGenerator.initQueryWrapper(processEsDeclare, req.getParameterMap());
Page<ProcessEsDeclare> page = new Page<>(pageNo, pageSize);
return page(page, queryWrapper);
}
/**
* 列表查询
*
* @param processEsDeclare
* @param req
* @return
*/
@Override
public List<ProcessEsDeclare> queryList(ProcessEsDeclare processEsDeclare, HttpServletRequest req) {
return list(QueryGenerator.initQueryWrapper(processEsDeclare, req.getParameterMap()));
}
/**
* 保存
*
* @param processEsDeclare
* @return
*/
@Override
public void add(ProcessEsDeclare processEsDeclare) {
Date now = new Date();
processEsDeclare.setCreateTime(now);
processEsDeclare.setUpdateTime(now);
save(processEsDeclare);
}
/**
* 更新
*
* @param processEsDeclare
* @return
*/
@Override
public void editById(ProcessEsDeclare processEsDeclare) {
Date now = new Date();
processEsDeclare.setUpdateTime(now);
saveOrUpdate(processEsDeclare);
}
/**
* 通过id删除
*
* @param id
* @return
*/
@Override
public void deleteById(String id) {
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public ProcessEsDeclare queryById(String id) {
return getById(id);
}
@Override
public ProcessEsDeclare queryByProjectId(String projectId) {
ProcessEsDeclare processEsDeclare = getOne(new LambdaQueryWrapper<ProcessEsDeclare>().eq(ProcessEsDeclare::getProjectId, projectId), false);
if (!Objects.isNull(processEsDeclare)){
// 标准名称
LawsEnterpriseStandard lawsEnterpriseStandard = lawsEnterpriseStandardService.getOne(
new LambdaQueryWrapper<LawsEnterpriseStandard>()
.eq(LawsEnterpriseStandard::getStandardNumber, processEsDeclare.getStandardNo()), false);
if (!Objects.isNull(lawsEnterpriseStandard)){
processEsDeclare.setStandardId(lawsEnterpriseStandard.getId());
processEsDeclare.setStandardName(lawsEnterpriseStandard.getStandardName());
}
// 宣贯人
processEsDeclare.setDeclareUserDictText(sysUserService.dictByIdsOrUserNames(processEsDeclare.getDeclareUser(), ""));
// 联络人
processEsDeclare.setInitiatorDictText(sysUserService.dictByIdsOrUserNames(processEsDeclare.getInitiator(), ""));
}
return processEsDeclare;
}
}
@@ -1,40 +0,0 @@
package com.jero.modules.activiti.process.esdeclare.vo;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.process.esdeclare.entity.ProcessEsDeclare;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Map;
/**
* @ClassName: EsDEclareFlowVO
* @Description:
* @Author: yjz
* @Date: 2023-11-30 09:57
* @Version: 1.0
**/
@Data
public class EsDeclareFlowVO {
/**流程信息*/
@ApiModelProperty(value = "流程信息")
private ProcessAll processAll;
/**流程审批信息*/
@ApiModelProperty(value = "流程审批信息")
private ProcessApprovalRecord processApprovalRecord;
/**业务基本信息*/
@ApiModelProperty(value = "业务基本信息")
private ProcessEsDeclare processEsDeclare;
/**map*/
@ApiModelProperty(value = "map")
private Map<String, Object> map;
/**草稿信息json字符串*/
@ApiModelProperty(value = "草稿信息json字符串")
private String infoJsonStr;
/**
* 保存来源
*/
@ApiModelProperty(value="保存来源(1:待办 2:草稿)")
private String saveSource;
}
@@ -1,62 +0,0 @@
package com.jero.modules.activiti.process.esinspect.common;
/**
* @ClassName: EsInspectCpmmon
* @Description:
* @Author: yjz
* @Date: 2023-11-09 13:47
* @Version: 1.0
**/
public class EsInspectCommon {
private EsInspectCommon(){
}
/**
* 企标稽查流程key
*/
public static final String KEY = "inspect_process";
/**
* 企标稽查流程name
*/
public static final String NAME = "企业稽查流程";
/**
* 企标稽查流程节点: 1:稽查负责人发起,2:负责人主管级领导审批,3:稽查负责人上传稽查报告和整改计划,4:负责人主管级领导审批,5:相关人员会签
*/
public static final String PROCESS_NODE_1 = "responsible_start";
/**
* 企标稽查流程节点: 1:稽查负责人发起,2:负责人主管级领导审批,3:稽查负责人上传稽查报告和整改计划,4:负责人主管级领导审批,5:相关人员会签
*/
public static final String PROCESS_NODE_2 = "leader_approval";
/**
* 企标稽查流程节点: 1:稽查负责人发起,2:负责人主管级领导审批,3:稽查负责人上传稽查报告和整改计划,4:负责人主管级领导审批,5:相关人员会签
*/
public static final String PROCESS_NODE_3 = "responsible_upload";
/**
* 企标稽查流程节点: 1:稽查负责人发起,2:负责人主管级领导审批,3:稽查负责人上传稽查报告和整改计划,4:负责人主管级领导审批,5:相关人员会签
*/
public static final String PROCESS_NODE_4 = "leader_approval_again";
/**
* 企标稽查流程节点: 1:稽查负责人发起,2:负责人主管级领导审批,3:稽查负责人上传稽查报告和整改计划,4:负责人主管级领导审批,5:相关人员会签
*/
public static final String PROCESS_NODE_5 = "involve_countersign";
/**
* 稽查状态: 1:进行中,2:稽查中,3:已完成,4:拖期
*/
public static final String INSPECT_STATUS_1 = "1";
/**
* 稽查状态: 1:进行中,2:稽查中,3:已完成,4:拖期
*/
public static final String INSPECT_STATUS_2 = "2";
/**
* 稽查状态: 1:进行中,2:稽查中,3:已完成,4:拖期
*/
public static final String INSPECT_STATUS_3 = "3";
/**
* 稽查状态: 1:进行中,2:稽查中,3:已完成,4:拖期
*/
public static final String INSPECT_STATUS_4 = "4";
}
@@ -1,127 +0,0 @@
package com.jero.modules.activiti.process.esinspect.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation;
import com.jero.common.util.MessageUtils;
import com.jero.common.util.SnowflakeUtils;
import com.jero.modules.activiti.process.esinspect.service.IEsInspectFlowService;
import com.jero.modules.activiti.process.esinspect.vo.EsInspectFlowVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.*;
/**
* @ClassName: EsInspectFlowController
* @Description:
* @Author: yjz
* @Date: 2023-11-23 09:22
* @Version: 1.0
**/
@Api(tags="企标稽查流程")
@RestController
@RequestMapping("/esinspect/esInspectFlowController")
@Slf4j
public class EsInspectFlowController {
private final IEsInspectFlowService esInspectFlowService;
public EsInspectFlowController(@Lazy IEsInspectFlowService esInspectFlowService) {
this.esInspectFlowService = esInspectFlowService;
}
/**
* 企标稽查流程-生成项目id
* @return 项目id
*/
@AutoLog(value = "企标稽查流程-生成项目id")
@ApiOperation(value="企标稽查流程-生成项目id", notes="企标稽查流程-生成项目id")
@GetMapping(value = "/getProjectId")
public String getProjectId() {
return String.valueOf(SnowflakeUtils.snowflake());
}
/**
* 企标稽查流程-流程发起
* @param esInspectFlowVO 企标稽查流程VO对象
* @return 结果对象
*/
@AutoLog(value = "企标稽查流程-流程发起")
@ApiOperation(value="企标稽查流程-流程发起", notes="企标稽查流程-流程发起")
@PostMapping(value = "/flowStart")
public Result<T> flowStart(@RequestBody EsInspectFlowVO esInspectFlowVO) {
esInspectFlowService.flowStart(esInspectFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 企标稽查流程-流程保存
* @param esInspectFlowVO 企标稽查流程VO对象
* @return 结果对象
*/
@AutoLog(value = "企标稽查流程-流程保存")
@ApiOperation(value="企标稽查流程-流程保存", notes="企标稽查流程-流程保存")
@PostMapping(value = "/flowSave")
public Result<T> flowSave(@RequestBody EsInspectFlowVO esInspectFlowVO) {
esInspectFlowService.flowSave(esInspectFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 企标稽查流程-办理详情
* @param projectId 项目id
* @return 结果对象
*/
@AutoLog(value = "企标稽查流程-办理详情")
@ApiOperation(value="企标稽查流程-办理详情", notes="企标稽查流程-办理详情")
@GetMapping(value = "/queryDetailByProjectId")
@Translation
public Result<EsInspectFlowVO> queryDetailByProjectId(@ApiParam("项目id") String projectId, @ApiParam("任务id") String taskId) {
return Result.OK(esInspectFlowService.queryDetailByProjectId(projectId, taskId));
}
/**
* 企标稽查流程-流程审批
* @param esInspectFlowVO 企标稽查流程VO对象
* @return 结果对象
*/
@AutoLog(value = "企标稽查流程-流程审批")
@ApiOperation(value="企标稽查流程-流程审批", notes="企标稽查流程-流程审批")
@PostMapping(value = "/flowApproval")
public Result<T> flowApproval(@RequestBody EsInspectFlowVO esInspectFlowVO) {
// TODO: 稽查内容回显通过企标制修订创建的稽查内容
esInspectFlowService.flowApproval(esInspectFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 企标稽查流程-驳回
* @param esInspectFlowVO 企标稽查计划流程VO对象
* @return 结果对象
*/
@AutoLog(value = "企标稽查流程-驳回")
@ApiOperation(value="企标稽查流程-驳回", notes="企标稽查流程-驳回")
@PostMapping(value = "/flowReject")
public Result<T> flowReject(@RequestBody EsInspectFlowVO esInspectFlowVO) {
log.info("");
esInspectFlowService.flowApproval(esInspectFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 企标稽查流程-流程转办
* @return 结果对象
*/
@AutoLog(value = "企标稽查流程-流程转办")
@ApiOperation(value="企标稽查流程-流程转办", notes="企标稽查流程-流程转办")
@GetMapping(value = "/flowTransfer")
public Result<T> flowTransfer(@ApiParam("任务id") String taskId, @ApiParam("用户id") String userId) {
esInspectFlowService.flowTransfer(taskId, userId);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
}
@@ -1,180 +0,0 @@
package com.jero.modules.activiti.process.esinspect.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation;
import com.jero.common.system.base.controller.JeroController;
import com.jero.modules.activiti.process.esinspect.entity.ProcessEsInspect;
import com.jero.modules.activiti.process.esinspect.service.IProcessEsInspectService;
import com.jero.modules.activiti.process.esinspect.vo.ProcessEsInspectVO;
import com.jero.modules.oss.entity.OSSFile;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* @Description: 企标稽查流程业务表
* @Author: jero-boot
* @Date: 2023-11-22
* @Version: V1.0
*/
@Api(tags="企标稽查流程业务表")
@RestController
@RequestMapping("/esinspect/processEsInspect")
@Slf4j
public class ProcessEsInspectController extends JeroController<ProcessEsInspect, IProcessEsInspectService> {
private final IProcessEsInspectService processEsInspectService;
public ProcessEsInspectController(IProcessEsInspectService processEsInspectService) {
this.processEsInspectService = processEsInspectService;
}
/**
* 分页列表查询
*
* @param processEsInspectVO
* @param pageNo
* @param pageSize
* @return
*/
@AutoLog(value = "企标稽查流程业务表-分页列表查询")
@ApiOperation(value="企标稽查流程业务表-分页列表查询", notes="企标稽查流程业务表-分页列表查询")
@GetMapping(value = "/queryByPage")
@Translation
public Result<IPage<ProcessEsInspectVO>> queryByPage(ProcessEsInspectVO processEsInspectVO,
@ApiParam("当前页") @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@ApiParam("每页条数") @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
return Result.OK(processEsInspectService.queryByPage(processEsInspectVO, pageNo, pageSize));
}
/**
* 列表查询
*
* @param processEsInspectVO
* @return
*/
@AutoLog(value = "企标稽查流程业务表-列表查询")
@ApiOperation(value="企标稽查流程业务表-列表查询", notes="企标稽查流程业务表-列表查询")
@GetMapping(value = "/queryByList")
@Translation
public Result<List<ProcessEsInspectVO>> queryByList(ProcessEsInspectVO processEsInspectVO) {
return Result.OK(processEsInspectService.queryByList(processEsInspectVO));
}
/**
* 企标文件查询
*
* @param inspectId
* @return
*/
@AutoLog(value = "企标稽查流程业务表-企标文件查询")
@ApiOperation(value="企标稽查流程业务表-企标文件查询", notes="企标稽查流程业务表-企标文件查询")
@GetMapping(value = "/queryFileByInspectId")
@Translation
public Result<OSSFile> queryFileByInspectId(String inspectId) {
return Result.OK(processEsInspectService.queryFileByInspectId(inspectId));
}
/**
* 添加
*
* @param processEsInspect
* @return
*/
@AutoLog(value = "企标稽查流程业务表-添加")
@ApiOperation(value="企标稽查流程业务表-添加", notes="企标稽查流程业务表-添加")
@PostMapping(value = "/add")
public Result<T> add(@Validated @RequestBody ProcessEsInspect processEsInspect) {
processEsInspectService.add(processEsInspect);
return Result.OK("操作成功!");
}
/**
* 编辑
*
* @param processEsInspect
* @return
*/
@AutoLog(value = "企标稽查流程业务表-编辑")
@ApiOperation(value="企标稽查流程业务表-编辑", notes="企标稽查流程业务表-编辑")
@PostMapping(value = "/edit")
public Result<T> edit(@Validated @RequestBody ProcessEsInspect processEsInspect) {
processEsInspectService.editById(processEsInspect);
return Result.OK("操作成功!");
}
/**
* 通过id删除
*
* @param map
* @return
*/
@AutoLog(value = "企标稽查流程业务表-通过id删除")
@ApiOperation(value="企标稽查流程业务表-通过id删除", notes="企标稽查流程业务表-通过id删除")
@PostMapping(value = "/delete")
public Result<T> delete(@RequestBody Map<String, String> map) {
if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){
return Result.error("请选择数据!");
}
processEsInspectService.deleteById(map.get("id"));
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param map
* @return
*/
@AutoLog(value = "企标稽查流程业务表-批量删除")
@ApiOperation(value="企标稽查流程业务表-批量删除", notes="企标稽查流程业务表-批量删除")
@PostMapping(value = "/deleteBatch")
public Result<T> deleteBatch(@RequestBody Map<String, String> map) {
if(!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))){
return Result.error("请选择数据!");
}
this.processEsInspectService.deleteByIds(Arrays.asList(map.get("ids").split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
@AutoLog(value = "企标稽查流程业务表-通过id查询")
@ApiOperation(value="企标稽查流程业务表-通过id查询", notes="企标稽查流程业务表-通过id查询")
@GetMapping(value = "/queryById")
public Result<ProcessEsInspect> queryById(@RequestParam(name="id",required=true) String id) {
ProcessEsInspect processEsInspect = processEsInspectService.queryById(id);
if(processEsInspect==null) {
return Result.error("未找到对应数据");
}
return Result.OK(processEsInspect);
}
/**
* 导出excel
*
* @param request
* @param processEsInspect
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, ProcessEsInspect processEsInspect) {
return super.exportXls(request, processEsInspect, ProcessEsInspect.class, "企标稽查流程业务表");
}
}
@@ -1,72 +0,0 @@
package com.jero.modules.activiti.process.esinspect.entity;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.modules.laws.documenttool.entity.BaseEntity;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectContent;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectRectifyPlan;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectReport;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* @Description: 企标稽查流程业务表
* @Author: jero-boot
* @Date: 2023-11-22
* @Version: V1.0
*/
@Data
@TableName("process_es_inspect")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="process_es_inspect对象", description="企标稽查流程业务表")
public class ProcessEsInspect extends BaseEntity {
/**项目id*/
@Excel(name = "项目id", width = 15)
@ApiModelProperty(value = "项目id")
private java.lang.String projectId;
/**企标稽查id*/
@Excel(name = "企标稽查id", width = 15)
@ApiModelProperty(value = "企标稽查id")
private java.lang.String inspectId;
/**实际稽查完成日期*/
@Excel(name = "实际稽查完成日期", width = 15)
@ApiModelProperty(value = "实际稽查完成日期")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@TableField(updateStrategy = FieldStrategy.IGNORED)
private Date completeDate;
/**实际稽查人*/
@Excel(name = "实际稽查人", width = 15)
@ApiModelProperty(value = "实际稽查人")
@TableField(updateStrategy = FieldStrategy.IGNORED)
private java.lang.String actualInspectUser;
/**稽查内容*/
@ApiModelProperty(value = "稽查内容")
@TableField(exist = false)
private List<EnterpriseStandardInspectContent> enterpriseStandardInspectContentList;
/**稽查报告*/
@ApiModelProperty(value = "稽查报告")
@TableField(exist = false)
private List<EnterpriseStandardInspectReport> enterpriseStandardInspectReportList;
/**整改计划*/
@ApiModelProperty(value = "整改计划")
@TableField(exist = false)
private List<EnterpriseStandardInspectRectifyPlan> enterpriseStandardInspectRectifyPlanList;
/**ids 添加用*/
@ApiModelProperty(value = "ids 添加用")
@TableField(exist = false)
private java.lang.String ids;
}
@@ -1,35 +0,0 @@
package com.jero.modules.activiti.process.esinspect.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.jero.modules.activiti.process.esinspect.entity.ProcessEsInspect;
import com.jero.modules.activiti.process.esinspect.vo.ProcessEsInspectVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Description: 企标稽查流程业务表
* @Author: jero-boot
* @Date: 2023-11-22
* @Version: V1.0
*/
public interface ProcessEsInspectMapper extends BaseMapper<ProcessEsInspect> {
/**
* 企标稽查流程业务表-分页查询
* @param page
* @param queryWrapper
* @return
*/
IPage<ProcessEsInspectVO> queryByPage(IPage<ProcessEsInspectVO> page, @Param(Constants.WRAPPER) QueryWrapper<ProcessEsInspectVO> queryWrapper);
/**
* 企标稽查流程业务表-列表查询
* @param queryWrapper
* @return
*/
List<ProcessEsInspectVO> queryByList(@Param(Constants.WRAPPER) QueryWrapper<ProcessEsInspectVO> queryWrapper);
}
@@ -1,42 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.activiti.process.esinspect.mapper.ProcessEsInspectMapper">
<select id="queryByPage" resultType="com.jero.modules.activiti.process.esinspect.vo.ProcessEsInspectVO">
<include refid="select_process_es_inspect"/>
</select>
<select id="queryByList" resultType="com.jero.modules.activiti.process.esinspect.vo.ProcessEsInspectVO">
<include refid="select_process_es_inspect"/>
</select>
<sql id="select_process_es_inspect">
select *
from (select pesi.id,
pesi.create_by,
pesi.create_time,
pesi.update_by,
pesi.update_time,
pesi.del_flag,
pesi.project_id,
pesi.inspect_id,
pesi.complete_date,
pesi.actual_inspect_user,
inspect_no,
(IF(les.standard_number is not null, les.standard_name, inspect_name)) inspect_name,
standardization_work_group,
belong_dept,
plan_inspect_date,
inspect_user,
standardization_docking_user,
inspect_status,
group_concat(lesio.plan_inspect_object separator ',') plan_inspect_object,
(select count(id) count from laws_enterprise_standard_inspect_content where process_es_inspect_id = pesi.id) standard_inspect_content_count
from process_es_inspect pesi
left join laws_enterprise_standard_inspect lesi on pesi.inspect_id = lesi.id
left join laws_enterprise_standard les on lesi.inspect_no = les.standard_number and les.del_flag = '0'
left join laws_enterprise_standard_inspect_object lesio on lesi.id = lesio.inspect_id
group by pesi.id) t
${ew.customSqlSegment}
</sql>
</mapper>
@@ -1,46 +0,0 @@
package com.jero.modules.activiti.process.esinspect.service;
import com.jero.modules.activiti.process.esinspect.vo.EsInspectFlowVO;
/**
* @InterfaceName: IEsInspectFlowService
* @Description:
* @Author: yjz
* @Date: 2023-11-23 09:23
* @Version: 1.0
**/
public interface IEsInspectFlowService {
/**
* 企标稽查流程-流程发起
* @param esInspectFlowVO
*/
void flowStart(EsInspectFlowVO esInspectFlowVO);
/**
* 企标稽查流程-流程保存
* @param esInspectFlowVO
*/
void flowSave(EsInspectFlowVO esInspectFlowVO);
/**
* 企标稽查流程-办理详情
* @param projectId
* @param taskId
* @return
*/
EsInspectFlowVO queryDetailByProjectId(String projectId, String taskId);
/**
* 企标稽查流程-流程审批
* @param esInspectFlowVO
*/
void flowApproval(EsInspectFlowVO esInspectFlowVO);
/**
* 企标稽查流程-流程转办
* @param taskId
* @param userId
*/
void flowTransfer(String taskId, String userId);
}
@@ -1,102 +0,0 @@
package com.jero.modules.activiti.process.esinspect.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.activiti.process.esinspect.entity.ProcessEsInspect;
import com.jero.modules.activiti.process.esinspect.vo.ProcessEsInspectVO;
import com.jero.modules.oss.entity.OSSFile;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* @Description: 企标稽查流程业务表
* @Author: jero-boot
* @Date: 2023-11-22
* @Version: V1.0
*/
public interface IProcessEsInspectService extends IService<ProcessEsInspect> {
/**
* 分页查询
*
* @param processEsInspect
* @param pageNo
* @param pageSize
* @param req
* @return
*/
IPage<ProcessEsInspect> queryPage(ProcessEsInspect processEsInspect, Integer pageNo, Integer pageSize, HttpServletRequest req);
/**
* 列表查询
*
* @param processEsInspect
* @param req
* @return
*/
List<ProcessEsInspect> queryList(ProcessEsInspect processEsInspect, HttpServletRequest req);
/**
* 保存
*
* @param processEsInspect
* @return
*/
void add(ProcessEsInspect processEsInspect);
/**
* 更新
*
* @param processEsInspect
* @return
*/
void editById(ProcessEsInspect processEsInspect);
/**
* 通过id删除
*
* @param id
* @return
*/
void deleteById(String id);
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
ProcessEsInspect queryById(String id);
/**
* 企标稽查流程业务表-分页查询
* @param processEsInspectVO
* @param pageNo
* @param pageSize
* @return
*/
IPage<ProcessEsInspectVO> queryByPage(ProcessEsInspectVO processEsInspectVO, Integer pageNo, Integer pageSize);
/**
* 企标稽查流程业务表-列表查询
* @param processEsInspectVO
* @return
*/
List<ProcessEsInspectVO> queryByList(ProcessEsInspectVO processEsInspectVO);
/**
* 企标稽查流程业务表-企标文件查询
* @param inspectId
* @return
*/
OSSFile queryFileByInspectId(String inspectId);
}
@@ -1,39 +0,0 @@
package com.jero.modules.activiti.process.esinspect.service.impl;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.WorkCenterService;
import com.jero.modules.activiti.util.SpringContextUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @ClassName: EsInspectPlanFlowService
* @Description:
* @Author: yjz
* @Date: 2024-01-11 21:19
* @Version: 1.0
**/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
@Service
public class EsInspectFlow implements WorkCenterService {
/**
* 强制撤回
* @param processAll 流程总表
*/
@Override
public void changeToDraft(ProcessAll processAll) {
// 删除业务表数据
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
processAllService.physicalDeleteByProjectId("process_es_inspect", processAll.getProjectId());
}
@Override
public void handleTransfer(ProcessAll processAll, ProcessApprovalRecord processApprovalRecord, String toUserId, String userId) {
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
processAllService.specialTransfer(processAll, processApprovalRecord, toUserId, userId);
}
}
@@ -1,543 +0,0 @@
package com.jero.modules.activiti.process.esinspect.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.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.SnowflakeUtils;
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.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.esinspect.common.EsInspectCommon;
import com.jero.modules.activiti.process.esinspect.entity.ProcessEsInspect;
import com.jero.modules.activiti.process.esinspect.service.IEsInspectFlowService;
import com.jero.modules.activiti.process.esinspect.service.IProcessEsInspectService;
import com.jero.modules.activiti.process.esinspect.vo.EsInspectFlowVO;
import com.jero.modules.activiti.process.esinspect.vo.ProcessEsInspectVO;
import com.jero.modules.activiti.process.esinspectrectify.common.EsInspectRectifyCommon;
import com.jero.modules.activiti.process.esinspectrectify.entity.ProcessEsInspectRectify;
import com.jero.modules.activiti.process.esinspectrectify.service.IEsInspectRectifyFlowService;
import com.jero.modules.activiti.process.esinspectrectify.service.IProcessEsInspectRectifyService;
import com.jero.modules.activiti.process.esinspectrectify.vo.EsInspectRectifyFlowVO;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspect;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectContent;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectRectifyPlan;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectReport;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectContentService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectRectifyPlanService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectReportService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectService;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* @ClassName: EsInspectFlowServiceImpl
* @Description:
* @Author: yjz
* @Date: 2023-11-23 09:25
* @Version: 1.0
**/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
@Service
public class EsInspectFlowServiceImpl implements IEsInspectFlowService {
private final ProcessAllService processAllService;
private final ProcessApprovalRecordService processApprovalRecordService;
private final ProcessDraftService processDraftService;
private final ProcessNodeLinkService processNodeLinkService;
private final IProcessEsInspectService processEsInspectService;
private final ILawsEnterpriseStandardService lawsEnterpriseStandardService;
private final EnterpriseStandardInspectService enterpriseStandardInspectService;
private final EnterpriseStandardInspectContentService enterpriseStandardInspectContentService;
private final EnterpriseStandardInspectRectifyPlanService enterpriseStandardInspectRectifyPlanService;
private final EnterpriseStandardInspectReportService enterpriseStandardInspectReportService;
private final IEsInspectRectifyFlowService esInspectReportFlowService;
private final IProcessEsInspectRectifyService processEsInspectRectifyService;
public EsInspectFlowServiceImpl(ProcessAllService processAllService,
ProcessApprovalRecordService processApprovalRecordService,
ProcessDraftService processDraftService,
ProcessNodeLinkService processNodeLinkService,
IProcessEsInspectService processEsInspectService,
ILawsEnterpriseStandardService lawsEnterpriseStandardService,
EnterpriseStandardInspectService enterpriseStandardInspectService,
EnterpriseStandardInspectContentService enterpriseStandardInspectContentService,
EnterpriseStandardInspectRectifyPlanService enterpriseStandardInspectRectifyPlanService,
EnterpriseStandardInspectReportService enterpriseStandardInspectReportService,
IEsInspectRectifyFlowService esInspectReportFlowService,
IProcessEsInspectRectifyService processEsInspectReportService) {
this.processAllService = processAllService;
this.processApprovalRecordService = processApprovalRecordService;
this.processDraftService = processDraftService;
this.processNodeLinkService = processNodeLinkService;
this.processEsInspectService = processEsInspectService;
this.lawsEnterpriseStandardService = lawsEnterpriseStandardService;
this.enterpriseStandardInspectService = enterpriseStandardInspectService;
this.enterpriseStandardInspectContentService = enterpriseStandardInspectContentService;
this.enterpriseStandardInspectRectifyPlanService = enterpriseStandardInspectRectifyPlanService;
this.enterpriseStandardInspectReportService = enterpriseStandardInspectReportService;
this.esInspectReportFlowService = esInspectReportFlowService;
this.processEsInspectRectifyService = processEsInspectReportService;
}
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
@Resource
private TaskService taskService;
@Resource
private IProcessHandleService processHandleService;
@Override
public void flowStart(EsInspectFlowVO esInspectFlowVO) {
// 流程信息
ProcessAll processAll = esInspectFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectFlowVO.getProcessApprovalRecord();
// map(参数)
Map<String, Object> map = esInspectFlowVO.getMap();
// 根据流程key启动流程 同时 设置审批人员参数
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey(EsInspectCommon.KEY, map);
// 再次设置map
runtimeService.setVariables(processInstance.getId(), map);
// 更新流程总表信息
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT.getValue()));
processAll.setPrcStatus(ProcessStatusEnum.INCOMPLETE.getValue());
DateTime date = DateUtil.date();
processAll.setPrcNum(DateUtil.format(date, DatePattern.PURE_DATETIME_MS_PATTERN));
processAll.setCreateUserId(loginUser.getId());
processAllService.update(processAll,
new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getProcessInstanceId, processInstance.getId()));
// 根据流程实例id查询
Task task = taskService.createTaskQuery()
.processInstanceId(processInstance.getId())
.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()));
// 处理业务表数据
handleBusinessData(esInspectFlowVO);
// 新增流程实例节点关联用户表
processNodeLinkService.saveNodeUserLink(processInstance.getProcessDefinitionId(), processInstance.getId(), listToString(map));
// 自动完成第一个节点
taskService.complete(task.getId());
// 更新企标稽查状态
updateLawsEnterpriseStandardStatus(processAll.getProjectId());
}
private void handleBusinessData(EsInspectFlowVO esInspectFlowVO) {
List<ProcessEsInspect> processEsInspectList = esInspectFlowVO.getProcessEsInspectList();
// 删除数据
if (StringUtils.isNotBlank(esInspectFlowVO.getProcessAllDelIds())){
List<String> idList = Arrays.asList(esInspectFlowVO.getProcessAllDelIds().split(","));
processEsInspectService.removeByIds(idList);
enterpriseStandardInspectContentService.removeByIds(idList);
enterpriseStandardInspectReportService.removeByIds(idList);
enterpriseStandardInspectRectifyPlanService.removeByIds(idList);
}
ProcessAll processAll = esInspectFlowVO.getProcessAll();
String projectId = processAll.getProjectId();
processEsInspectList.stream().map(v -> {
if (StringUtils.isBlank(v.getId())){
v.setId(String.valueOf(SnowflakeUtils.snowflake()));
}
v.setProjectId(projectId);
return v;
}).collect(Collectors.toList()).forEach(v -> log.info(v.toString()));
// 重复性校验
duplicateCheck(processEsInspectList);
processEsInspectService.saveOrUpdateBatch(processEsInspectList);
for (ProcessEsInspect processEsInspect : processEsInspectList) {
// 处理稽查内容
if (StringUtils.isBlank(processAll.getNodeId())){
// 添加新稽查内容
List<EnterpriseStandardInspectContent> enterpriseStandardInspectContentList = processEsInspect.getEnterpriseStandardInspectContentList();
for (EnterpriseStandardInspectContent enterpriseStandardInspectContent : enterpriseStandardInspectContentList) {
enterpriseStandardInspectContent.setProcessEsInspectId(processEsInspect.getId());
}
enterpriseStandardInspectContentService.saveOrUpdateBatch(enterpriseStandardInspectContentList);
}
// 处理稽查报告 和 整改计划
handleReportAndRectifyPlan(processAll, processEsInspect);
}
}
private void duplicateCheck(List<ProcessEsInspect> processEsInspectList) {
List<String> inspectIdList = new ArrayList<>();
for (ProcessEsInspect processEsInspect : processEsInspectList) {
ProcessEsInspect esInspect = processEsInspectService.getOne(
new LambdaQueryWrapper<ProcessEsInspect>()
.eq(ProcessEsInspect::getInspectId, processEsInspect.getInspectId())
.ne(ProcessEsInspect::getId, processEsInspect.getId()));
if (!Objects.isNull(esInspect)){
int size = processDraftService.count(new LambdaQueryWrapper<ProcessDraft>()
.eq(ProcessDraft::getProjectId, esInspect.getProjectId())
.and(qw -> qw.ne(ProcessDraft::getSaveSource, "3")
.or().isNull(ProcessDraft::getSaveSource)));
if (size == 0){
inspectIdList.add(processEsInspect.getInspectId());
}
}
}
if (!inspectIdList.isEmpty()){
List<EnterpriseStandardInspect> enterpriseStandardInspectList = enterpriseStandardInspectService.listByIds(inspectIdList);
if (!enterpriseStandardInspectList.isEmpty()){
String errorMsg = enterpriseStandardInspectList.stream().map(EnterpriseStandardInspect::getInspectNo).collect(Collectors.joining(","));
throw new JeroBootException("稽查依据标准号为:" + errorMsg + "的稽查计划企标不可重复发起!");
}
}
}
private void handleReportAndRectifyPlan(ProcessAll processAll, ProcessEsInspect processEsInspect) {
if (EsInspectCommon.PROCESS_NODE_3.equals(processAll.getNodeId())){
// 添加新稽查报告
List<EnterpriseStandardInspectReport> enterpriseStandardInspectReportList = processEsInspect.getEnterpriseStandardInspectReportList();
for (EnterpriseStandardInspectReport enterpriseStandardInspectReport : enterpriseStandardInspectReportList) {
enterpriseStandardInspectReport.setProcessEsInspectId(processEsInspect.getId());
}
enterpriseStandardInspectReportService.saveOrUpdateBatch(enterpriseStandardInspectReportList);
// 添加新整改计划
List<EnterpriseStandardInspectRectifyPlan> enterpriseStandardInspectRectifyPlanList = processEsInspect.getEnterpriseStandardInspectRectifyPlanList();
for (EnterpriseStandardInspectRectifyPlan enterpriseStandardInspectRectifyPlan : enterpriseStandardInspectRectifyPlanList) {
enterpriseStandardInspectRectifyPlan.setProcessEsInspectId(processEsInspect.getId());
// 如果整改单位不为空,则同时更新相关稽查内容的整改单位
if (StringUtils.isNotBlank(enterpriseStandardInspectRectifyPlan.getResponseDepart())){
// 通过整改计划查询稽查报告
EnterpriseStandardInspectReport enterpriseStandardInspectReport =
enterpriseStandardInspectReportService.getById(
enterpriseStandardInspectRectifyPlan.getInspectReportId());
if (!Objects.isNull(enterpriseStandardInspectReport)){
enterpriseStandardInspectContentService.update(
new LambdaUpdateWrapper<EnterpriseStandardInspectContent>()
.eq(EnterpriseStandardInspectContent::getId,
enterpriseStandardInspectReport.getInspectContentId())
.set(EnterpriseStandardInspectContent::getRectificationDepartment,
enterpriseStandardInspectRectifyPlan.getResponseDepart()));
}
}
}
enterpriseStandardInspectRectifyPlanService.saveOrUpdateBatch(enterpriseStandardInspectRectifyPlanList);
}
}
private void updateLawsEnterpriseStandardStatus(String projectId) {
List<ProcessEsInspect> list = processEsInspectService.list(
new LambdaQueryWrapper<ProcessEsInspect>()
.eq(ProcessEsInspect::getProjectId, projectId));
List<String> processIds = list.stream().map(ProcessEsInspect::getInspectId).collect(Collectors.toList());
enterpriseStandardInspectService.update(
new LambdaUpdateWrapper<EnterpriseStandardInspect>()
.in(EnterpriseStandardInspect::getId, processIds)
.set(EnterpriseStandardInspect::getInspectStatus, EsInspectCommon.INSPECT_STATUS_2));
}
private Map<String, Object> listToString(Map<String, Object> map) {
Map<String, Object> stringObjectHashMap;
stringObjectHashMap = map.entrySet().stream().map(v -> {
if (v.getValue() instanceof List) {
List<String> list = (List<String>)v.getValue();
v.setValue(String.join(",", list));
}
return v;
}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
return stringObjectHashMap;
}
@Override
public void flowSave(EsInspectFlowVO esInspectFlowVO) {
// 处理业务表数据
handleBusinessData(esInspectFlowVO);
// 流程信息
ProcessAll processAll = esInspectFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectFlowVO.getProcessApprovalRecord();
// 更新流程信息
processAllService.update(new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getId, processAll.getId())
.set(ProcessAll::getPrcName, processAll.getPrcName())
.set(ProcessAll::getPrcMes, processAll.getPrcMes())
.set(ProcessAll::getDueTime, processAll.getDueTime()));
// 更新流程审批信息
processApprovalRecordService.update(new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getTaskId, processAll.getTaskId())
.set(ProcessApprovalRecord::getCommitText, processApprovalRecord.getCommitText())
.set(ProcessApprovalRecord::getCommitFile, processApprovalRecord.getCommitFile()));
}
@Override
public EsInspectFlowVO queryDetailByProjectId(String projectId, String taskId) {
EsInspectFlowVO esInspectFlowVO = new EsInspectFlowVO();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId)
.orderByDesc(ProcessAll::getCreateTime), false);
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
// 是否存在草稿
List<ProcessDraft> processDraftList = processDraftService.list(new LambdaQueryWrapper<ProcessDraft>()
.eq(ProcessDraft::getProjectId, projectId)
.eq(ProcessDraft::getUserId, loginUser.getId())
.and(qw -> qw.ne(ProcessDraft::getSaveSource, "3")
.or().isNull(ProcessDraft::getSaveSource)));
if (!processDraftList.isEmpty()){
String id = "";
if(Objects.isNull(processAll)){
processAll = new ProcessAll();
id = String.valueOf(SnowflakeUtils.snowflake());
}else {
id = processAll.getId();
}
// 存在草稿
ProcessDraft processDraft = processDraftList.get(0);
// 属性拷贝
BeanUtils.copyProperties(processDraft, processAll);
processAll.setId(id);
if (StringUtils.isNotBlank(processDraft.getHandleFile())){
processApprovalRecord.setCommitFile(processDraft.getHandleFile());
}
if (StringUtils.isNotBlank(processDraft.getHandleText())){
processApprovalRecord.setCommitText(processDraft.getHandleText());
}
if (!Objects.isNull(processDraft.getProcessDueDate())){
processAll.setDueTime(processDraft.getProcessDueDate());
}
if (StringUtils.isNotBlank(processDraft.getProcessDescription())){
processAll.setPrcMes(processDraft.getProcessDescription());
}
if (StringUtils.isNotBlank(processDraft.getInfoJsonStr())){
esInspectFlowVO.setInfoJsonStr(processDraft.getInfoJsonStr());
}
}else {
// 不存在草稿
processApprovalRecord = processApprovalRecordService.getOne(new LambdaQueryWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getUserId, loginUser.getId())
.eq(ProcessApprovalRecord::getTaskId, taskId)
, false);
}
// 业务表数据
ProcessEsInspectVO processEsInspectVO = new ProcessEsInspectVO();
processEsInspectVO.setProjectId(projectId);
List<ProcessEsInspectVO> processEsInspectVOList = processEsInspectService.queryByList(processEsInspectVO);
esInspectFlowVO.setProcessEsInspectVOList(processEsInspectVOList);
esInspectFlowVO.setProcessAll(processAll);
esInspectFlowVO.setProcessApprovalRecord(processApprovalRecord);
return esInspectFlowVO;
}
@Override
public void flowApproval(EsInspectFlowVO esInspectFlowVO) {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// 流程信息
ProcessAll processAll = esInspectFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectFlowVO.getProcessApprovalRecord();
// map(参数)
Map<String, Object> map = esInspectFlowVO.getMap();
// 更新流程信息
processAllService.update(new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getId, processAll.getId())
.set(ProcessAll::getPrcName, processAll.getPrcName())
.set(ProcessAll::getPrcMes, processAll.getPrcMes())
.set(ProcessAll::getDueTime, processAll.getDueTime()));
// 更新流程审批信息
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()));
Task task = taskService.createTaskQuery().taskId(processAll.getTaskId()).singleResult();
if (task!= null) {
// 完成任务
taskService.complete(task.getId(), map);
// 处理业务表数据
handleBusinessData(esInspectFlowVO);
// 再次更新流程审批信息
processApprovalRecordService.update(new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getUserId, loginUser.getId())
.eq(ProcessApprovalRecord::getTaskId, processAll.getTaskId())
.set(ProcessApprovalRecord::getCommitFlag, processApprovalRecord.getCommitFlag()));
// 判断是否是最后一个节点
if (isLastNode(processAll.getProcessInstanceId())){
// 企标稽查计划 生成数据 保存企标库
saveDataToInspect(processAll.getProjectId());
}
}
}
private void saveDataToInspect(String projectId) {
ProcessEsInspectVO processEsInspectVO = new ProcessEsInspectVO();
processEsInspectVO.setProjectId(projectId);
// 通过项目id查询企标稽查流程业务表信息
List<ProcessEsInspectVO> processEsInspectVOList = processEsInspectService.queryByList(processEsInspectVO);
for (ProcessEsInspectVO esInspectVO : processEsInspectVOList) {
// 企标稽查id
String inspectId = esInspectVO.getInspectId();
// 更新企标稽数据
enterpriseStandardInspectService.update(new LambdaUpdateWrapper<EnterpriseStandardInspect>()
.eq(EnterpriseStandardInspect::getId, inspectId)
.set(EnterpriseStandardInspect::getActualInspectUser, esInspectVO.getActualInspectUser())
.set(EnterpriseStandardInspect::getCompleteDate, esInspectVO.getCompleteDate())
.set(EnterpriseStandardInspect::getInspectStatus, EsInspectCommon.INSPECT_STATUS_3));
// 查询企标信息
LawsEnterpriseStandard lawsEnterpriseStandard = lawsEnterpriseStandardService.getOne(
new LambdaQueryWrapper<LawsEnterpriseStandard>().eq(LawsEnterpriseStandard::getStandardNumber, esInspectVO.getInspectNo()), false);
// 查询稽查内容
List<EnterpriseStandardInspectContent> enterpriseStandardInspectContentList = enterpriseStandardInspectContentService.list(
new LambdaQueryWrapper<EnterpriseStandardInspectContent>()
.eq(EnterpriseStandardInspectContent::getProcessEsInspectId, esInspectVO.getId()));
// 查询稽查报告
List<EnterpriseStandardInspectReport> enterpriseStandardInspectReportList = enterpriseStandardInspectReportService.list(
new LambdaQueryWrapper<EnterpriseStandardInspectReport>()
.eq(EnterpriseStandardInspectReport::getProcessEsInspectId, esInspectVO.getId()));
// 查询整改计划
List<EnterpriseStandardInspectRectifyPlan> enterpriseStandardInspectRectifyPlanList = enterpriseStandardInspectRectifyPlanService.list(
new LambdaQueryWrapper<EnterpriseStandardInspectRectifyPlan>()
.eq(EnterpriseStandardInspectRectifyPlan::getProcessEsInspectId, esInspectVO.getId()));
if (!Objects.isNull(lawsEnterpriseStandard)){
// 企标内容
List<String> idList = enterpriseStandardInspectContentList.stream()
.map(EnterpriseStandardInspectContent::getId)
.collect(Collectors.toList());
if (!idList.isEmpty()){
enterpriseStandardInspectContentService.update(
new LambdaUpdateWrapper<EnterpriseStandardInspectContent>()
.in(EnterpriseStandardInspectContent::getId, idList)
.set(EnterpriseStandardInspectContent::getStandardId, lawsEnterpriseStandard.getId()));
}
}
if (!enterpriseStandardInspectReportList.isEmpty()){
// 稽查报告
List<String> idList = enterpriseStandardInspectReportList.stream().map(EnterpriseStandardInspectReport::getId).collect(Collectors.toList());
if (!idList.isEmpty()){
enterpriseStandardInspectReportService.update(
new LambdaUpdateWrapper<EnterpriseStandardInspectReport>()
.in(EnterpriseStandardInspectReport::getId, idList)
.set(EnterpriseStandardInspectReport::getInspectId, inspectId));
}
}
if (!enterpriseStandardInspectRectifyPlanList.isEmpty()){
enterpriseStandardInspectRectifyPlanList.forEach(enterpriseStandardInspectRectifyPlan ->
// 自动生成企标稽查整改
autoEsInspectRectifyPlanFlow(esInspectVO, enterpriseStandardInspectRectifyPlan)
);
// 企标整改计划
List<String> idList = enterpriseStandardInspectRectifyPlanList.stream().map(EnterpriseStandardInspectRectifyPlan::getId).collect(Collectors.toList());
enterpriseStandardInspectRectifyPlanService.update(
new LambdaUpdateWrapper<EnterpriseStandardInspectRectifyPlan>()
.in(EnterpriseStandardInspectRectifyPlan::getId, idList)
.set(EnterpriseStandardInspectRectifyPlan::getInspectId, inspectId));
}
}
}
private void autoEsInspectRectifyPlanFlow(ProcessEsInspectVO esInspectVO, EnterpriseStandardInspectRectifyPlan enterpriseStandardInspectRectifyPlan) {
if (!EsInspectRectifyCommon.INSPECT_RECTIFY_STATUS_1.equals(enterpriseStandardInspectRectifyPlan.getRectifyStatus())){
return;
}
// 自动生成企标稽查整改
EsInspectRectifyFlowVO esInspectReportFlowVO = new EsInspectRectifyFlowVO();
// 处理流程信息
ProcessAll processAll = new ProcessAll();
processAll.setProjectId(String.valueOf(SnowflakeUtils.snowflake()));
// 生成流程名称
String prcName = esInspectVO.getInspectNo() + "-" + esInspectVO.getInspectName() + "-稽查整改";
processAll.setPrcName(prcName);
processAll.setCreateUserId(enterpriseStandardInspectRectifyPlan.getResponseUser());
esInspectReportFlowVO.setProcessAll(processAll);
// 处理流程审批信息
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
processApprovalRecord.setProjectId(processAll.getProjectId());
processApprovalRecord.setUserId(enterpriseStandardInspectRectifyPlan.getResponseUser());
esInspectReportFlowVO.setProcessApprovalRecord(processApprovalRecord);
// 处理业务表数据
ProcessEsInspectRectify processEsInspectRectify = new ProcessEsInspectRectify();
processEsInspectRectify.setProjectId(processAll.getProjectId());
processEsInspectRectify.setInspectRectifyPlanId(enterpriseStandardInspectRectifyPlan.getId());
esInspectReportFlowVO.setProcessEsInspectRectify(processEsInspectRectify);
processEsInspectRectifyService.save(processEsInspectRectify);
// 处理人员信息
Map<String, Object> map = new HashMap<>();
map.put("responsible", enterpriseStandardInspectRectifyPlan.getResponseUser());
map.put("leader", "请选择");
map.put("responsibleApproval", "请选择");
esInspectReportFlowVO.setMap(map);
esInspectReportFlowService.createReportFlow(esInspectReportFlowVO);
}
@Override
public void flowTransfer(String taskId, String userId) {
processHandleService.transfer(taskId, userId);
}
public boolean isLastNode(String processInstanceId) {
// 查询流程实例状态
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
// 如果流程实例为null,表示流程已结束
return processInstance == null;
}
}
@@ -1,258 +0,0 @@
package com.jero.modules.activiti.process.esinspect.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.enums.LanguageEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.util.MessageUtils;
import com.jero.common.util.SnowflakeUtils;
import com.jero.modules.activiti.process.esinspect.entity.ProcessEsInspect;
import com.jero.modules.activiti.process.esinspect.mapper.ProcessEsInspectMapper;
import com.jero.modules.activiti.process.esinspect.service.IProcessEsInspectService;
import com.jero.modules.activiti.process.esinspect.vo.ProcessEsInspectVO;
import com.jero.modules.laws.common.constant.FieldCommon;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspect;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectContent;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectRectifyPlan;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectReport;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectContentService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectRectifyPlanService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectReportService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectService;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.system.service.ISysUserService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
/**
* @Description: 企标稽查流程业务表
* @Author: jero-boot
* @Date: 2023-11-22
* @Version: V1.0
*/
@Service
@Transactional(rollbackFor = JeroBootException.class)
public class ProcessEsInspectServiceImpl extends ServiceImpl<ProcessEsInspectMapper, ProcessEsInspect> implements IProcessEsInspectService {
private final ProcessEsInspectMapper processEsInspectMapper;
private final EnterpriseStandardInspectContentService enterpriseStandardInspectContentService;
private final EnterpriseStandardInspectRectifyPlanService enterpriseStandardInspectRectifyPlanService;
private final EnterpriseStandardInspectReportService enterpriseStandardInspectReportService;
private final ISysUserService sysUserService;
private final IOSSFileService ossFileService;
private final EnterpriseStandardInspectService enterpriseStandardInspectService;
private final ILawsEnterpriseStandardService lawsEnterpriseStandardService;
public ProcessEsInspectServiceImpl(ProcessEsInspectMapper processEsInspectMapper,
EnterpriseStandardInspectContentService enterpriseStandardInspectContentService,
EnterpriseStandardInspectRectifyPlanService enterpriseStandardInspectRectifyPlanService,
EnterpriseStandardInspectReportService enterpriseStandardInspectReportService,
ISysUserService sysUserService,
IOSSFileService ossFileService,
EnterpriseStandardInspectService enterpriseStandardInspectService,
ILawsEnterpriseStandardService lawsEnterpriseStandardService) {
this.processEsInspectMapper = processEsInspectMapper;
this.enterpriseStandardInspectContentService = enterpriseStandardInspectContentService;
this.enterpriseStandardInspectRectifyPlanService = enterpriseStandardInspectRectifyPlanService;
this.enterpriseStandardInspectReportService = enterpriseStandardInspectReportService;
this.sysUserService = sysUserService;
this.ossFileService = ossFileService;
this.enterpriseStandardInspectService = enterpriseStandardInspectService;
this.lawsEnterpriseStandardService = lawsEnterpriseStandardService;
}
/**
* 分页查询
*
* @param processEsInspect
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@Override
public IPage<ProcessEsInspect> queryPage(ProcessEsInspect processEsInspect, Integer pageNo, Integer pageSize,
HttpServletRequest req) {
QueryWrapper<ProcessEsInspect> queryWrapper = QueryGenerator.initQueryWrapper(processEsInspect, req.getParameterMap());
Page<ProcessEsInspect> page = new Page<>(pageNo, pageSize);
return page(page, queryWrapper);
}
/**
* 列表查询
*
* @param processEsInspect
* @param req
* @return
*/
@Override
public List<ProcessEsInspect> queryList(ProcessEsInspect processEsInspect, HttpServletRequest req) {
return list(QueryGenerator.initQueryWrapper(processEsInspect, req.getParameterMap()));
}
/**
* 保存
*
* @param processEsInspect
* @return
*/
@Override
public void add(ProcessEsInspect processEsInspect) {
String ids = processEsInspect.getIds();
for (String s : ids.split(",")) {
int count = count(
new LambdaQueryWrapper<ProcessEsInspect>()
.eq(ProcessEsInspect::getInspectId, s)
.eq(ProcessEsInspect::getProjectId, processEsInspect.getProjectId()));
if (count > 0) {
if (LanguageEnum.CN.getValue().equals(MessageUtils.getLanguage().getValue())){
throw new JeroBootException("不能重复添加!");
}else {
throw new JeroBootException("Cannot repeat add!");
}
}
processEsInspect.setInspectId(s);
processEsInspect.setId(String.valueOf(SnowflakeUtils.snowflake()));
save(processEsInspect);
}
}
/**
* 更新
*
* @param processEsInspect
* @return
*/
@Override
public void editById(ProcessEsInspect processEsInspect) {
saveOrUpdate(processEsInspect);
}
/**
* 通过id删除
*
* @param id
* @return
*/
@Override
public void deleteById(String id) {
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public ProcessEsInspect queryById(String id) {
return getById(id);
}
@Override
public IPage<ProcessEsInspectVO> queryByPage(ProcessEsInspectVO processEsInspectVO, Integer pageNo, Integer pageSize) {
QueryWrapper<ProcessEsInspectVO> queryWrapper = getProcessEsInspectVOQueryWrapper(processEsInspectVO);
IPage<ProcessEsInspectVO> processEsInspectVOIPage = processEsInspectMapper.queryByPage(new Page<>(pageNo, pageSize), queryWrapper);
setProperty(processEsInspectVOIPage.getRecords());
return processEsInspectVOIPage;
}
private void setProperty(List<ProcessEsInspectVO> processEsInspectVOList) {
for (ProcessEsInspectVO processEsInspectVO : processEsInspectVOList) {
// 稽查内容
List<EnterpriseStandardInspectContent> enterpriseStandardInspectContents = enterpriseStandardInspectContentService.queryClauseByEsInspectId(processEsInspectVO.getId());
if (CollectionUtils.isNotEmpty(enterpriseStandardInspectContents)){
processEsInspectVO.setEnterpriseStandardInspectContentList(enterpriseStandardInspectContents);
}
// 稽查报告
List<EnterpriseStandardInspectReport> enterpriseStandardInspectReports = enterpriseStandardInspectReportService.queryByProcessEsInspectId(processEsInspectVO.getId());
if (CollectionUtils.isNotEmpty(enterpriseStandardInspectReports)){
processEsInspectVO.setEnterpriseStandardInspectReportList(enterpriseStandardInspectReports);
}
// 整改计划
List<EnterpriseStandardInspectRectifyPlan> enterpriseStandardInspectRectifyPlanList = enterpriseStandardInspectRectifyPlanService.queryByProcessEsInspectId(processEsInspectVO.getId());
if (CollectionUtils.isNotEmpty(enterpriseStandardInspectRectifyPlanList)){
processEsInspectVO.setEnterpriseStandardInspectRectifyPlanList(enterpriseStandardInspectRectifyPlanList);
}
processEsInspectVO.setInspectUserDictText(sysUserService.dictByIdsOrUserNames(processEsInspectVO.getInspectUser(), ""));
}
}
@Override
public List<ProcessEsInspectVO> queryByList(ProcessEsInspectVO processEsInspectVO) {
QueryWrapper<ProcessEsInspectVO> queryWrapper = getProcessEsInspectVOQueryWrapper(processEsInspectVO);
List<ProcessEsInspectVO> processEsInspectVOS = processEsInspectMapper.queryByList(queryWrapper);
setProperty(processEsInspectVOS);
return processEsInspectVOS;
}
@Override
public OSSFile queryFileByInspectId(String inspectId) {
EnterpriseStandardInspect enterpriseStandardInspect = enterpriseStandardInspectService.getById(inspectId);
LawsEnterpriseStandard lawsEnterpriseStandard = lawsEnterpriseStandardService.getOne(
new LambdaQueryWrapper<LawsEnterpriseStandard>()
.eq(LawsEnterpriseStandard::getStandardNumber, enterpriseStandardInspect.getInspectNo()), false);
if (!Objects.isNull(lawsEnterpriseStandard)){
List<OSSFile> list = ossFileService.list(
new LambdaQueryWrapper<OSSFile>()
.eq(OSSFile::getStandardId, lawsEnterpriseStandard.getId())
.orderByDesc(OSSFile::getCreateTime));
if (!list.isEmpty()){
// 发布稿>修改单>报批稿>送审稿>征求意见稿>草稿
String[] fileTypeArr = {FieldCommon.FILE_PUBLISH_OF_ORIGINAL, FieldCommon.FILE_MODIFICATION_LIST,
FieldCommon.FILE_DRAFT_FOR_REVIEW, FieldCommon.FILE_DRAFT_FOR_APPROVAL,
FieldCommon.FILE_DRAFT_FOR_COMMENT, FieldCommon.FILE_DRAFT};
for (String fileType : fileTypeArr) {
Optional<OSSFile> optional = list.stream()
.filter(v -> fileType.equals(v.getStandardFileType())
&& (v.getFileName().endsWith(".pdf")
|| v.getFileName().endsWith(".docx")
|| v.getFileName().endsWith(".doc"))).findFirst();
if (optional.isPresent()){
return optional.get();
}
}
}
}
return new OSSFile();
}
@NotNull
private static QueryWrapper<ProcessEsInspectVO> getProcessEsInspectVOQueryWrapper(ProcessEsInspectVO processEsInspectVO) {
QueryWrapper<ProcessEsInspectVO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(StringUtils.isNotBlank(processEsInspectVO.getId()), "t.id", processEsInspectVO.getId());
queryWrapper.eq(StringUtils.isNotBlank(processEsInspectVO.getProjectId()), "t.project_id", processEsInspectVO.getProjectId());
queryWrapper.eq("t.del_flag", 0);
queryWrapper.orderByAsc("t.create_time");
return queryWrapper;
}
}
@@ -1,44 +0,0 @@
package com.jero.modules.activiti.process.esinspect.vo;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.process.esinspect.entity.ProcessEsInspect;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* @ClassName: 企标稽查流程VO
* @Description:
* @Author: yjz
* @Date: 2023-11-09 11:51
* @Version: 1.0
**/
@Data
public class EsInspectFlowVO {
/**流程信息*/
@ApiModelProperty(value = "流程信息")
private ProcessAll processAll;
/**流程审批信息*/
@ApiModelProperty(value = "流程审批信息")
private ProcessApprovalRecord processApprovalRecord;
/**业务基本信息*/
@ApiModelProperty(value = "业务基本信息")
private List<ProcessEsInspect> processEsInspectList;
/**业务基本信息 展示用*/
@ApiModelProperty(value = "业务基本信息 展示用")
private List<ProcessEsInspectVO> processEsInspectVOList;
/**map*/
@ApiModelProperty(value = "map")
private Map<String, Object> map;
/**草稿信息json字符串*/
@ApiModelProperty(value = "草稿信息json字符串")
private String infoJsonStr;
/**
* 流程全局删除ids
*/
@ApiModelProperty(value="流程全局删除ids")
private String processAllDelIds;
}
@@ -1,66 +0,0 @@
package com.jero.modules.activiti.process.esinspect.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectContent;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectRectifyPlan;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectReport;
import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardInspectVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* @ClassName: ProcessEsInspectVO
* @Description:
* @Author: yjz
* @Date: 2023-11-23 09:20
* @Version: 1.0
**/
@Data
public class ProcessEsInspectVO extends EnterpriseStandardInspectVo {
/**项目id*/
@Excel(name = "项目id", width = 15)
@ApiModelProperty(value = "项目id")
private java.lang.String projectId;
/**企标稽查id*/
@Excel(name = "企标稽查id", width = 15)
@ApiModelProperty(value = "企标稽查id")
private java.lang.String inspectId;
/** 实际稽查完成日期 */
@Excel(name = "实际稽查完成日期", width = 15, orderNum = "1", format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "实际稽查完成日期")
private Date completeDate;
/** 实际稽查人 */
@Excel(name = "实际稽查人", width = 15, orderNum = "1")
@ApiModelProperty(value = "实际稽查人")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
private String actualInspectUser;
/**稽查内容数量*/
@ApiModelProperty(value = "稽查内容数量")
private java.lang.String standardInspectContentCount;
/** 稽查负责人 翻译*/
@ApiModelProperty(value = "稽查负责人 翻译")
private String inspectUserDictText;
/**稽查内容*/
@ApiModelProperty(value = "稽查内容")
@TableField(exist = false)
private List<EnterpriseStandardInspectContent> enterpriseStandardInspectContentList;
/**稽查报告*/
@ApiModelProperty(value = "稽查报告")
@TableField(exist = false)
private List<EnterpriseStandardInspectReport> enterpriseStandardInspectReportList;
/**整改计划*/
@ApiModelProperty(value = "整改计划")
@TableField(exist = false)
private List<EnterpriseStandardInspectRectifyPlan> enterpriseStandardInspectRectifyPlanList;
}
@@ -1,40 +0,0 @@
package com.jero.modules.activiti.process.esinspectdelayapply.common;
/**
* @ClassName: EsInspectDelayApplyCommon
* @Description:
* @Author: yjz
* @Date: 2023-11-28 10:13
* @Version: 1.0
**/
public class EsInspectDelayApplyCommon {
private EsInspectDelayApplyCommon(){
}
/**
* 稽查延期申请流程key
*/
public static final String KEY = "inspect_delay_apply_process";
/**
* 稽查延期申请流程name
*/
public static final String NAME = "稽查延期申请流程";
/**
* 稽查延期申请流程节点: 1:稽查负责人申请延期,2:负责人主管级领导审批,3:稽查联络人评估,4:负责人主管级上一级领导审批
*/
public static final String PROCESS_NODE_1 = "responsible_start";
/**
* 稽查延期申请流程节点: 1:稽查负责人申请延期,2:负责人主管级领导审批,3:稽查联络人评估,4:负责人主管级上一级领导审批
*/
public static final String PROCESS_NODE_2 = "leader_approval";
/**
* 稽查延期申请流程节点: 1:稽查负责人申请延期,2:负责人主管级领导审批,3:稽查联络人评估,4:负责人主管级上一级领导审批
*/
public static final String PROCESS_NODE_3 = "liaisons_assess";
/**
* 稽查延期申请流程节点: 1:稽查负责人申请延期,2:负责人主管级领导审批,3:稽查联络人评估,4:负责人主管级上一级领导审批
*/
public static final String PROCESS_NODE_4 = "leader_up_level";
}
@@ -1,127 +0,0 @@
package com.jero.modules.activiti.process.esinspectdelayapply.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation;
import com.jero.common.util.MessageUtils;
import com.jero.common.util.SnowflakeUtils;
import com.jero.modules.activiti.process.esinspectdelayapply.service.IEsInspectDelayApplyFlowService;
import com.jero.modules.activiti.process.esinspectdelayapply.vo.EsInspectDelayApplyFlowVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.*;
/**
* @ClassName: 稽查延期申请流程
* @Description:
* @Author: yjz
* @Date: 2023-11-09 11:45
* @Version: 1.0
**/
@Api(tags="稽查延期申请流程")
@RestController
@RequestMapping("/process/esInspectDelayApplyFlow")
@Slf4j
public class EsInspectDelayApplyFlowController {
private final IEsInspectDelayApplyFlowService esInspectDelayApplyFlowService;
public EsInspectDelayApplyFlowController(@Lazy IEsInspectDelayApplyFlowService esInspectDelayApplyFlowService) {
this.esInspectDelayApplyFlowService = esInspectDelayApplyFlowService;
}
/**
* 稽查延期申请流程-生成项目id
* @return 项目id
*/
@AutoLog(value = "稽查延期申请流程-生成项目id")
@ApiOperation(value="稽查延期申请流程-生成项目id", notes="稽查延期申请流程-生成项目id")
@GetMapping(value = "/getProjectId")
public String getProjectId() {
return String.valueOf(SnowflakeUtils.snowflake());
}
/**
* 稽查延期申请流程-流程发起
* @param esInspectDelayApplyFlowVO 稽查延期申请流程VO对象
* @return 结果对象
*/
@AutoLog(value = "稽查延期申请流程-流程发起")
@ApiOperation(value="稽查延期申请流程-流程发起", notes="稽查延期申请流程-流程发起")
@PostMapping(value = "/flowStart")
public Result<T> flowStart(@RequestBody EsInspectDelayApplyFlowVO esInspectDelayApplyFlowVO) {
esInspectDelayApplyFlowService.flowStart(esInspectDelayApplyFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 稽查延期申请流程-流程保存
* @param esInspectDelayApplyFlowVO 稽查延期申请流程VO对象
* @return 结果对象
*/
@AutoLog(value = "稽查延期申请流程-流程保存")
@ApiOperation(value="稽查延期申请流程-流程保存", notes="稽查延期申请流程-流程保存")
@PostMapping(value = "/flowSave")
public Result<T> flowSave(@RequestBody EsInspectDelayApplyFlowVO esInspectDelayApplyFlowVO) {
esInspectDelayApplyFlowService.flowSave(esInspectDelayApplyFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 稽查延期申请流程-办理详情
* @param projectId 项目id
* @return 结果对象
*/
@AutoLog(value = "稽查延期申请流程-办理详情")
@ApiOperation(value="稽查延期申请流程-办理详情", notes="稽查延期申请流程-办理详情")
@GetMapping(value = "/queryDetailByProjectId")
@Translation
public Result<EsInspectDelayApplyFlowVO> queryDetailByProjectId(@ApiParam("项目id") String projectId, @ApiParam("任务id") String taskId) {
return Result.OK(esInspectDelayApplyFlowService.queryDetailByProjectId(projectId, taskId));
}
/**
* 稽查延期申请流程-流程审批
* @param esInspectDelayApplyFlowVO 稽查延期申请流程VO对象
* @return 结果对象
*/
@AutoLog(value = "稽查延期申请流程-流程审批")
@ApiOperation(value="稽查延期申请流程-流程审批", notes="稽查延期申请流程-流程审批")
@PostMapping(value = "/flowApproval")
public Result<T> flowApproval(@RequestBody EsInspectDelayApplyFlowVO esInspectDelayApplyFlowVO) {
esInspectDelayApplyFlowService.flowApproval(esInspectDelayApplyFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 稽查延期申请流程-驳回
* @param esInspectDelayApplyFlowVO 稽查延期申请流程VO对象
* @return 结果对象
*/
@AutoLog(value = "稽查延期申请流程-驳回")
@ApiOperation(value="稽查延期申请流程-驳回", notes="稽查延期申请流程-驳回")
@PostMapping(value = "/flowReject")
public Result<T> flowReject(@RequestBody EsInspectDelayApplyFlowVO esInspectDelayApplyFlowVO) {
log.info("");
esInspectDelayApplyFlowService.flowApproval(esInspectDelayApplyFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 稽查延期申请流程-流程转办
* @return 结果对象
*/
@AutoLog(value = "稽查延期申请流程-流程转办")
@ApiOperation(value="稽查延期申请流程-流程转办", notes="稽查延期申请流程-流程转办")
@GetMapping(value = "/flowTransfer")
public Result<T> flowTransfer(@ApiParam("任务id") String taskId, @ApiParam("用户id") String userId) {
esInspectDelayApplyFlowService.flowTransfer(taskId, userId);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
}
@@ -1,171 +0,0 @@
package com.jero.modules.activiti.process.esinspectdelayapply.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.util.SnowflakeUtils;
import com.jero.modules.activiti.process.esinspectdelayapply.entity.ProcessEsInspectDelayApply;
import com.jero.modules.activiti.process.esinspectdelayapply.service.IProcessEsInspectDelayApplyService;
import com.jero.modules.activiti.process.esinspectdelayapply.vo.ProcessEsInspectDelayApplyVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* @Description: 稽查延期申请流程业务表
* @Author: jero-boot
* @Date: 2023-11-27
* @Version: V1.0
*/
@Api(tags="稽查延期申请流程业务表")
@RestController
@RequestMapping("/esinspectdelayapply/processEsInspectDelayApply")
@Slf4j
public class ProcessEsInspectDelayApplyController extends JeroController<ProcessEsInspectDelayApply, IProcessEsInspectDelayApplyService> {
@Autowired
private IProcessEsInspectDelayApplyService processEsInspectDelayApplyService;
/**
* 分页列表查询
*
* @param processEsInspectDelayApplyVO
* @param pageNo
* @param pageSize
* @return
*/
@AutoLog(value = "稽查延期申请流程业务表-分页列表查询")
@ApiOperation(value="稽查延期申请流程业务表-分页列表查询", notes="稽查延期申请流程业务表-分页列表查询")
@GetMapping(value = "/queryByPage")
@Translation
public Result<IPage<ProcessEsInspectDelayApplyVO>> queryByPage(ProcessEsInspectDelayApplyVO processEsInspectDelayApplyVO,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
IPage<ProcessEsInspectDelayApplyVO> pageList = processEsInspectDelayApplyService.queryByPage(processEsInspectDelayApplyVO, pageNo, pageSize);
return Result.OK(pageList);
}
/**
* 列表查询
*
* @param processEsInspectDelayApplyVO
* @return
*/
@AutoLog(value = "稽查延期申请流程业务表-列表查询")
@ApiOperation(value="稽查延期申请流程业务表-列表查询", notes="稽查延期申请流程业务表-列表查询")
@GetMapping(value = "/queryByList")
@Translation
public Result<List<ProcessEsInspectDelayApplyVO>> queryByList(ProcessEsInspectDelayApplyVO processEsInspectDelayApplyVO) {
List<ProcessEsInspectDelayApplyVO> list = processEsInspectDelayApplyService.queryByList(processEsInspectDelayApplyVO);
return Result.OK(list);
}
/**
* 添加
*
* @param processEsInspectDelayApply
* @return
*/
@AutoLog(value = "稽查延期申请流程业务表-添加")
@ApiOperation(value="稽查延期申请流程业务表-添加", notes="稽查延期申请流程业务表-添加")
@PostMapping(value = "/add")
public Result<T> add(@Validated @RequestBody ProcessEsInspectDelayApply processEsInspectDelayApply) {
String ids = processEsInspectDelayApply.getIds();
for (String s : ids.split(",")) {
processEsInspectDelayApply.setInspectId(s);
processEsInspectDelayApply.setId(String.valueOf(SnowflakeUtils.snowflake()));
processEsInspectDelayApplyService.add(processEsInspectDelayApply);
}
return Result.OK("操作成功!");
}
/**
* 编辑
*
* @param processEsInspectDelayApply
* @return
*/
@AutoLog(value = "稽查延期申请流程业务表-编辑")
@ApiOperation(value="稽查延期申请流程业务表-编辑", notes="稽查延期申请流程业务表-编辑")
@PostMapping(value = "/edit")
public Result<T> edit(@Validated @RequestBody ProcessEsInspectDelayApply processEsInspectDelayApply) {
processEsInspectDelayApplyService.editById(processEsInspectDelayApply);
return Result.OK("操作成功!");
}
/**
* 通过id删除
*
* @param map
* @return
*/
@AutoLog(value = "稽查延期申请流程业务表-通过id删除")
@ApiOperation(value="稽查延期申请流程业务表-通过id删除", notes="稽查延期申请流程业务表-通过id删除")
@PostMapping(value = "/delete")
public Result<T> delete(@RequestBody Map<String, String> map) {
if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){
return Result.error("请选择数据!");
}
processEsInspectDelayApplyService.deleteById(map.get("id"));
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param map
* @return
*/
@AutoLog(value = "稽查延期申请流程业务表-批量删除")
@ApiOperation(value="稽查延期申请流程业务表-批量删除", notes="稽查延期申请流程业务表-批量删除")
@PostMapping(value = "/deleteBatch")
public Result<T> deleteBatch(@RequestBody Map<String, String> map) {
if(!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))){
return Result.error("请选择数据!");
}
this.processEsInspectDelayApplyService.deleteByIds(Arrays.asList(map.get("ids").split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
@AutoLog(value = "稽查延期申请流程业务表-通过id查询")
@ApiOperation(value="稽查延期申请流程业务表-通过id查询", notes="稽查延期申请流程业务表-通过id查询")
@GetMapping(value = "/queryById")
public Result<ProcessEsInspectDelayApply> queryById(@RequestParam(name="id",required=true) String id) {
ProcessEsInspectDelayApply processEsInspectDelayApply = processEsInspectDelayApplyService.queryById(id);
if(processEsInspectDelayApply==null) {
return Result.error("未找到对应数据");
}
return Result.OK(processEsInspectDelayApply);
}
/**
* 导出excel
*
* @param request
* @param processEsInspectDelayApply
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, ProcessEsInspectDelayApply processEsInspectDelayApply) {
return super.exportXls(request, processEsInspectDelayApply, ProcessEsInspectDelayApply.class, "稽查延期申请流程业务表");
}
}
@@ -1,56 +0,0 @@
package com.jero.modules.activiti.process.esinspectdelayapply.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.modules.laws.documenttool.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @Description: 稽查延期申请流程
* @Author: jero-boot
* @Date: 2023-11-27
* @Version: V1.0
*/
@Data
@TableName("process_es_inspect_delay_apply")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="process_es_inspect_delay_apply对象", description="稽查延期申请流程")
public class ProcessEsInspectDelayApply extends BaseEntity {
/**项目id*/
@Excel(name = "项目id", width = 15)
@ApiModelProperty(value = "项目id")
private java.lang.String projectId;
/**企标稽查id*/
@Excel(name = "企标稽查id", width = 15)
@ApiModelProperty(value = "企标稽查id")
private String inspectId;
/**申请延期日期*/
@Excel(name = "申请延期日期", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "申请延期日期")
private Date requestDelayDate;
/**延期说明*/
@Excel(name = "延期说明", width = 15)
@ApiModelProperty(value = "延期说明")
private String delayDescription;
/**稽查联络人*/
@Excel(name = "稽查联络人", width = 15)
@ApiModelProperty(value = "稽查联络人")
private String liaisons;
/**ids 添加用*/
@ApiModelProperty(value = "ids 添加用")
@TableField(exist = false)
private java.lang.String ids;
}
@@ -1,24 +0,0 @@
package com.jero.modules.activiti.process.esinspectdelayapply.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.jero.modules.activiti.process.esinspectdelayapply.entity.ProcessEsInspectDelayApply;
import com.jero.modules.activiti.process.esinspectdelayapply.vo.ProcessEsInspectDelayApplyVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Description: 稽查延期申请流程
* @Author: jero-boot
* @Date: 2023-11-27
* @Version: V1.0
*/
public interface ProcessEsInspectDelayApplyMapper extends BaseMapper<ProcessEsInspectDelayApply> {
List<ProcessEsInspectDelayApplyVO> queryByList(@Param(Constants.WRAPPER) QueryWrapper<ProcessEsInspectDelayApplyVO> queryWrapper);
IPage<ProcessEsInspectDelayApplyVO> queryByPage(IPage<ProcessEsInspectDelayApplyVO> page, @Param(Constants.WRAPPER) QueryWrapper<ProcessEsInspectDelayApplyVO> queryWrapper);
}
@@ -1,43 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.activiti.process.esinspectdelayapply.mapper.ProcessEsInspectDelayApplyMapper">
<select id="queryByPage"
resultType="com.jero.modules.activiti.process.esinspectdelayapply.vo.ProcessEsInspectDelayApplyVO">
<include refid="select_process_es_inspect_delay_apply"/>
</select>
<select id="queryByList"
resultType="com.jero.modules.activiti.process.esinspectdelayapply.vo.ProcessEsInspectDelayApplyVO">
<include refid="select_process_es_inspect_delay_apply"/>
</select>
<sql id="select_process_es_inspect_delay_apply">
select *
from (SELECT pesida.id,
pesida.create_by,
pesida.create_time,
pesida.update_by,
pesida.update_time,
pesida.del_flag,
pesida.project_id,
pesida.inspect_id,
pesida.request_delay_date,
pesida.delay_description,
pesida.liaisons,
inspect_no,
(IF(les.standard_number is not null, les.standard_name, inspect_name)) inspect_name,
standardization_work_group,
belong_dept,
plan_inspect_date,
inspect_user,
standardization_docking_user,
inspect_status,
group_concat(lesio.plan_inspect_object separator ',') plan_inspect_object
FROM process_es_inspect_delay_apply pesida
LEFT JOIN laws_enterprise_standard_inspect lesi ON pesida.inspect_id = lesi.id
LEFT JOIN laws_enterprise_standard les ON lesi.inspect_no = les.standard_number AND les.del_flag = '0'
LEFT JOIN laws_enterprise_standard_inspect_object lesio ON lesi.id = lesio.inspect_id
group by pesida.id) t
${ew.customSqlSegment}
</sql>
</mapper>
@@ -1,45 +0,0 @@
package com.jero.modules.activiti.process.esinspectdelayapply.service;
import com.jero.modules.activiti.process.esinspectdelayapply.vo.EsInspectDelayApplyFlowVO;
/**
* @ClassName: IEsInspectDelayApplyFlowService
* @Description:
* @Author: yjz
* @Date: 2023-11-27 18:38
* @Version: 1.0
**/
public interface IEsInspectDelayApplyFlowService {
/**
* 稽查延期申请流程-流程发起
* @param esInspectDelayApplyFlowVO
*/
void flowStart(EsInspectDelayApplyFlowVO esInspectDelayApplyFlowVO);
/**
* 稽查延期申请流程-流程保存
* @param esInspectDelayApplyFlowVO
*/
void flowSave(EsInspectDelayApplyFlowVO esInspectDelayApplyFlowVO);
/**
* 稽查延期申请流程-办理详情
* @param projectId
* @param taskId
* @return
*/
EsInspectDelayApplyFlowVO queryDetailByProjectId(String projectId, String taskId);
/**
* 稽查延期申请流程-流程审批
* @param esInspectDelayApplyFlowVO
*/
void flowApproval(EsInspectDelayApplyFlowVO esInspectDelayApplyFlowVO);
/**
* 稽查延期申请流程-流程转办
* @param taskId
* @param userId
*/
void flowTransfer(String taskId, String userId);
}
@@ -1,75 +0,0 @@
package com.jero.modules.activiti.process.esinspectdelayapply.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.activiti.process.esinspectdelayapply.entity.ProcessEsInspectDelayApply;
import com.jero.modules.activiti.process.esinspectdelayapply.vo.ProcessEsInspectDelayApplyVO;
import java.util.List;
/**
* @Description: 稽查延期申请流程
* @Author: jero-boot
* @Date: 2023-11-27
* @Version: V1.0
*/
public interface IProcessEsInspectDelayApplyService extends IService<ProcessEsInspectDelayApply> {
/**
* 分页查询
*
* @param processEsInspectDelayApplyVO
* @param pageNo
* @param pageSize
* @return
*/
IPage<ProcessEsInspectDelayApplyVO> queryByPage(ProcessEsInspectDelayApplyVO processEsInspectDelayApplyVO, Integer pageNo, Integer pageSize);
/**
* 列表查询
*
* @param processEsInspectDelayApplyVO
* @return
*/
List<ProcessEsInspectDelayApplyVO> queryByList(ProcessEsInspectDelayApplyVO processEsInspectDelayApplyVO);
/**
* 保存
*
* @param processEsInspectDelayApply
* @return
*/
void add(ProcessEsInspectDelayApply processEsInspectDelayApply);
/**
* 更新
*
* @param processEsInspectDelayApply
* @return
*/
void editById(ProcessEsInspectDelayApply processEsInspectDelayApply);
/**
* 通过id删除
*
* @param id
* @return
*/
void deleteById(String id);
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
ProcessEsInspectDelayApply queryById(String id);
}
@@ -1,39 +0,0 @@
package com.jero.modules.activiti.process.esinspectdelayapply.service.impl;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.WorkCenterService;
import com.jero.modules.activiti.util.SpringContextUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @ClassName: EsInspectPlanFlowService
* @Description:
* @Author: yjz
* @Date: 2024-01-11 21:19
* @Version: 1.0
**/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
@Service
public class EsInspectDelayApplyFlow implements WorkCenterService {
/**
* 强制撤回
* @param processAll 流程总表
*/
@Override
public void changeToDraft(ProcessAll processAll) {
// 删除业务表数据
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
processAllService.physicalDeleteByProjectId("process_es_inspect_delay_apply", processAll.getProjectId());
}
@Override
public void handleTransfer(ProcessAll processAll, ProcessApprovalRecord processApprovalRecord, String toUserId, String userId) {
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
processAllService.specialTransfer(processAll, processApprovalRecord, toUserId, userId);
}
}
@@ -1,357 +0,0 @@
package com.jero.modules.activiti.process.esinspectdelayapply.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.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.SnowflakeUtils;
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.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.esinspect.common.EsInspectCommon;
import com.jero.modules.activiti.process.esinspect.entity.ProcessEsInspect;
import com.jero.modules.activiti.process.esinspect.service.IProcessEsInspectService;
import com.jero.modules.activiti.process.esinspectdelayapply.common.EsInspectDelayApplyCommon;
import com.jero.modules.activiti.process.esinspectdelayapply.entity.ProcessEsInspectDelayApply;
import com.jero.modules.activiti.process.esinspectdelayapply.service.IEsInspectDelayApplyFlowService;
import com.jero.modules.activiti.process.esinspectdelayapply.service.IProcessEsInspectDelayApplyService;
import com.jero.modules.activiti.process.esinspectdelayapply.vo.EsInspectDelayApplyFlowVO;
import com.jero.modules.activiti.process.esinspectdelayapply.vo.ProcessEsInspectDelayApplyVO;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspect;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectDelay;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectDelayService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectService;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* @ClassName: EsInspectDelayApplyFlowServiceImpl
* @Description:
* @Author: yjz
* @Date: 2023-11-27 18:38
* @Version: 1.0
**/
@Service
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
public class EsInspectDelayApplyFlowServiceImpl implements IEsInspectDelayApplyFlowService {
private final ProcessAllService processAllService;
private final ProcessApprovalRecordService processApprovalRecordService;
private final ProcessDraftService processDraftService;
private final ProcessNodeLinkService processNodeLinkService;
private final IProcessEsInspectService processEsInspectService;
private final EnterpriseStandardInspectService enterpriseStandardInspectService;
private final IProcessEsInspectDelayApplyService processEsInspectDelayApplyService;
private final EnterpriseStandardInspectDelayService enterpriseStandardInspectDelayService;
public EsInspectDelayApplyFlowServiceImpl(ProcessAllService processAllService,
ProcessApprovalRecordService processApprovalRecordService,
ProcessDraftService processDraftService,
ProcessNodeLinkService processNodeLinkService,
IProcessEsInspectService processEsInspectService,
EnterpriseStandardInspectService enterpriseStandardInspectService,
IProcessEsInspectDelayApplyService processEsInspectDelayApplyService,
EnterpriseStandardInspectDelayService enterpriseStandardInspectDelayService) {
this.processAllService = processAllService;
this.processApprovalRecordService = processApprovalRecordService;
this.processDraftService = processDraftService;
this.processNodeLinkService = processNodeLinkService;
this.processEsInspectService = processEsInspectService;
this.enterpriseStandardInspectService = enterpriseStandardInspectService;
this.processEsInspectDelayApplyService = processEsInspectDelayApplyService;
this.enterpriseStandardInspectDelayService = enterpriseStandardInspectDelayService;
}
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
@Resource
private TaskService taskService;
@Resource
private IProcessHandleService processHandleService;
@Override
public void flowStart(EsInspectDelayApplyFlowVO esInspectDelayApplyFlowVO) {
// 流程信息
ProcessAll processAll = esInspectDelayApplyFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectDelayApplyFlowVO.getProcessApprovalRecord();
// map(参数)
Map<String, Object> map = esInspectDelayApplyFlowVO.getMap();
// 根据流程key启动流程 同时 设置审批人员参数
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey(EsInspectDelayApplyCommon.KEY, map);
// 再次设置map
runtimeService.setVariables(processInstance.getId(), map);
// 更新流程总表信息
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT_DELAY_APPLY.getValue()));
processAll.setPrcStatus(ProcessStatusEnum.INCOMPLETE.getValue());
DateTime date = DateUtil.date();
processAll.setPrcNum(DateUtil.format(date, DatePattern.PURE_DATETIME_MS_PATTERN));
processAll.setCreateUserId(loginUser.getId());
processAllService.update(processAll,
new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getProcessInstanceId, processInstance.getId()));
// 根据流程实例id查询
Task task = taskService.createTaskQuery()
.processInstanceId(processInstance.getId())
.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()));
// 处理业务表数据
handleBusinessData(esInspectDelayApplyFlowVO);
// 新增流程实例节点关联用户表
processNodeLinkService.saveNodeUserLink(processInstance.getProcessDefinitionId(), processInstance.getId(), listToString(map));
// 自动完成第一个节点
taskService.complete(task.getId());
}
private void handleBusinessData(EsInspectDelayApplyFlowVO esInspectDelayApplyFlowVO) {
List<ProcessEsInspectDelayApply> processEsInspectDelayApplyList = esInspectDelayApplyFlowVO.getProcessEsInspectDelayApplyList();
// 删除数据
if (StringUtils.isNotBlank(esInspectDelayApplyFlowVO.getProcessAllDelIds())){
List<String> idList = Arrays.asList(esInspectDelayApplyFlowVO.getProcessAllDelIds().split(","));
processEsInspectDelayApplyService.removeByIds(idList);
}
ProcessAll processAll = esInspectDelayApplyFlowVO.getProcessAll();
String projectId = processAll.getProjectId();
processEsInspectDelayApplyList.stream().map(v -> {
if (StringUtils.isBlank(v.getId())){
v.setId(String.valueOf(SnowflakeUtils.snowflake()));
}
v.setProjectId(projectId);
return v;
}).collect(Collectors.toList()).forEach(v -> log.info(v.toString()));
processEsInspectDelayApplyService.saveOrUpdateBatch(processEsInspectDelayApplyList);
}
private Map<String, Object> listToString(Map<String, Object> map) {
Map<String, Object> stringObjectHashMap;
stringObjectHashMap = map.entrySet().stream().map(v -> {
if (v.getValue() instanceof List) {
List<String> list = (List<String>)v.getValue();
v.setValue(String.join(",", list));
}
return v;
}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
return stringObjectHashMap;
}
@Override
public void flowSave(EsInspectDelayApplyFlowVO esInspectDelayApplyFlowVO) {
// 处理业务表数据
handleBusinessData(esInspectDelayApplyFlowVO);
// 流程信息
ProcessAll processAll = esInspectDelayApplyFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectDelayApplyFlowVO.getProcessApprovalRecord();
// 更新流程信息
processAllService.update(new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getId, processAll.getId())
.set(ProcessAll::getPrcName, processAll.getPrcName())
.set(ProcessAll::getPrcMes, processAll.getPrcMes())
.set(ProcessAll::getDueTime, processAll.getDueTime()));
// 更新流程审批信息
processApprovalRecordService.update(new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getTaskId, processAll.getTaskId())
.set(ProcessApprovalRecord::getCommitText, processApprovalRecord.getCommitText())
.set(ProcessApprovalRecord::getCommitFile, processApprovalRecord.getCommitFile()));
}
@Override
public EsInspectDelayApplyFlowVO queryDetailByProjectId(String projectId, String taskId) {
EsInspectDelayApplyFlowVO esInspectDelayApplyFlowVO = new EsInspectDelayApplyFlowVO();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId)
.orderByDesc(ProcessAll::getCreateTime), false);
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
// 是否存在草稿
List<ProcessDraft> processDraftList = processDraftService.list(new LambdaQueryWrapper<ProcessDraft>()
.eq(ProcessDraft::getProjectId, projectId)
.eq(ProcessDraft::getUserId, loginUser.getId())
.and(qw -> qw.ne(ProcessDraft::getSaveSource, "3")
.or().isNull(ProcessDraft::getSaveSource)));
if (!processDraftList.isEmpty()){
String id = "";
if(Objects.isNull(processAll)){
processAll = new ProcessAll();
id = String.valueOf(SnowflakeUtils.snowflake());
}else {
id = processAll.getId();
}
// 存在草稿
ProcessDraft processDraft = processDraftList.get(0);
// 属性拷贝
BeanUtils.copyProperties(processDraft, processAll);
processAll.setId(id);
if (StringUtils.isNotBlank(processDraft.getHandleFile())){
processApprovalRecord.setCommitFile(processDraft.getHandleFile());
}
if (StringUtils.isNotBlank(processDraft.getHandleText())){
processApprovalRecord.setCommitText(processDraft.getHandleText());
}
if (!Objects.isNull(processDraft.getProcessDueDate())){
processAll.setDueTime(processDraft.getProcessDueDate());
}
if (StringUtils.isNotBlank(processDraft.getProcessDescription())){
processAll.setPrcMes(processDraft.getProcessDescription());
}
if (StringUtils.isNotBlank(processDraft.getInfoJsonStr())){
esInspectDelayApplyFlowVO.setInfoJsonStr(processDraft.getInfoJsonStr());
}
}else {
// 不存在草稿
processApprovalRecord = processApprovalRecordService.getOne(new LambdaQueryWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getUserId, loginUser.getId())
.eq(ProcessApprovalRecord::getTaskId, taskId)
, false);
}
// 业务表数据
ProcessEsInspectDelayApplyVO processEsInspectDelayApplyVO = new ProcessEsInspectDelayApplyVO();
processEsInspectDelayApplyVO.setProjectId(projectId);
processEsInspectDelayApplyVO.setNodeId(processApprovalRecord.getNodeId());
esInspectDelayApplyFlowVO.setProcessEsInspectDelayApplyVOList(processEsInspectDelayApplyService.queryByList(processEsInspectDelayApplyVO));
esInspectDelayApplyFlowVO.setProcessAll(processAll);
esInspectDelayApplyFlowVO.setProcessApprovalRecord(processApprovalRecord);
return esInspectDelayApplyFlowVO;
}
@Override
public void flowApproval(EsInspectDelayApplyFlowVO esInspectDelayApplyFlowVO) {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// 流程信息
ProcessAll processAll = esInspectDelayApplyFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectDelayApplyFlowVO.getProcessApprovalRecord();
// map(参数)
Map<String, Object> map = esInspectDelayApplyFlowVO.getMap();
// 更新流程信息
processAllService.update(new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getId, processAll.getId())
.set(ProcessAll::getPrcName, processAll.getPrcName())
.set(ProcessAll::getPrcMes, processAll.getPrcMes())
.set(ProcessAll::getDueTime, processAll.getDueTime()));
// 更新流程审批信息
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()));
Task task = taskService.createTaskQuery().taskId(processAll.getTaskId()).singleResult();
if (task!= null) {
// 完成任务
taskService.complete(task.getId(), map);
// 处理业务表数据
handleBusinessData(esInspectDelayApplyFlowVO);
// 再次更新流程审批信息
processApprovalRecordService.update(new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getUserId, loginUser.getId())
.eq(ProcessApprovalRecord::getTaskId, processAll.getTaskId())
.set(ProcessApprovalRecord::getCommitFlag, processApprovalRecord.getCommitFlag()));
// 判断是否是最后一个节点
if (isLastNode(processAll.getProcessInstanceId())){
// 稽查延期申请流程 更新计划稽查日期 生成企业标准稽查延期数据
saveDataToInspect(processAll.getProjectId());
}
}
}
private void saveDataToInspect(String projectId) {
List<ProcessEsInspectDelayApply> list = processEsInspectDelayApplyService.list(
new LambdaQueryWrapper<ProcessEsInspectDelayApply>()
.eq(ProcessEsInspectDelayApply::getProjectId, projectId));
List<EnterpriseStandardInspectDelay> enterpriseStandardInspectDelayList = new ArrayList<>();
for (ProcessEsInspectDelayApply processEsInspectDelayApply : list) {
// 查询之前稽查状态
String inspectStatus = EsInspectCommon.INSPECT_STATUS_1;
ProcessEsInspect processEsInspect = processEsInspectService.getOne(
new LambdaQueryWrapper<ProcessEsInspect>()
.eq(ProcessEsInspect::getInspectId, processEsInspectDelayApply.getInspectId()), false);
if (!Objects.isNull(processEsInspect)){
int size = processDraftService.count(new LambdaQueryWrapper<ProcessDraft>()
.eq(ProcessDraft::getProjectId, processEsInspect.getProjectId())
.and(qw -> qw.ne(ProcessDraft::getSaveSource, "3")
.or().isNull(ProcessDraft::getSaveSource)));
if (size == 0){
inspectStatus = EsInspectCommon.INSPECT_STATUS_2;
}
}
enterpriseStandardInspectService.update(
new LambdaUpdateWrapper<EnterpriseStandardInspect>()
.eq(EnterpriseStandardInspect::getId, processEsInspectDelayApply.getInspectId())
.set(EnterpriseStandardInspect::getPlanInspectDate, processEsInspectDelayApply.getRequestDelayDate())
.set(EnterpriseStandardInspect::getInspectStatus, inspectStatus));
EnterpriseStandardInspectDelay enterpriseStandardInspectDelay = new EnterpriseStandardInspectDelay();
enterpriseStandardInspectDelay.setInspectId(processEsInspectDelayApply.getInspectId());
enterpriseStandardInspectDelay.setRequestDelayDate(processEsInspectDelayApply.getRequestDelayDate());
enterpriseStandardInspectDelay.setDelayDescription(processEsInspectDelayApply.getDelayDescription());
enterpriseStandardInspectDelayList.add(enterpriseStandardInspectDelay);
}
enterpriseStandardInspectDelayService.saveBatch(enterpriseStandardInspectDelayList);
}
public boolean isLastNode(String processInstanceId) {
// 查询流程实例状态
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
// 如果流程实例为null,表示流程已结束
return processInstance == null;
}
@Override
public void flowTransfer(String taskId, String userId) {
processHandleService.transfer(taskId, userId);
}
}
@@ -1,150 +0,0 @@
package com.jero.modules.activiti.process.esinspectdelayapply.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.activiti.process.esinspectdelayapply.common.EsInspectDelayApplyCommon;
import com.jero.modules.activiti.process.esinspectdelayapply.entity.ProcessEsInspectDelayApply;
import com.jero.modules.activiti.process.esinspectdelayapply.mapper.ProcessEsInspectDelayApplyMapper;
import com.jero.modules.activiti.process.esinspectdelayapply.service.IProcessEsInspectDelayApplyService;
import com.jero.modules.activiti.process.esinspectdelayapply.vo.ProcessEsInspectDelayApplyVO;
import com.jero.modules.system.service.ISysUserService;
import org.apache.shiro.SecurityUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
* @Description: 稽查延期申请流程
* @Author: jero-boot
* @Date: 2023-11-27
* @Version: V1.0
*/
@Service
@Transactional(rollbackFor = JeroBootException.class)
public class ProcessEsInspectDelayApplyServiceImpl extends ServiceImpl<ProcessEsInspectDelayApplyMapper, ProcessEsInspectDelayApply> implements IProcessEsInspectDelayApplyService {
private final ProcessEsInspectDelayApplyMapper processEsInspectDelayApplyMapper;
private final ISysUserService sysUserService;
public ProcessEsInspectDelayApplyServiceImpl(ProcessEsInspectDelayApplyMapper processEsInspectDelayApplyMapper,
ISysUserService sysUserService) {
this.processEsInspectDelayApplyMapper = processEsInspectDelayApplyMapper;
this.sysUserService = sysUserService;
}
/**
* 分页查询
*
* @param processEsInspectDelayApplyVO
* @param pageNo
* @param pageSize
* @return
*/
@Override
public IPage<ProcessEsInspectDelayApplyVO> queryByPage(ProcessEsInspectDelayApplyVO processEsInspectDelayApplyVO, Integer pageNo, Integer pageSize) {
QueryWrapper<ProcessEsInspectDelayApplyVO> queryWrapper = getProcessEsInspectDelayApplyLambdaQueryWrapper(processEsInspectDelayApplyVO);
return processEsInspectDelayApplyMapper.queryByPage(new Page<>(pageNo, pageSize), queryWrapper);
}
/**
* 列表查询
*
* @param processEsInspectDelayApplyVO
* @return
*/
@Override
public List<ProcessEsInspectDelayApplyVO> queryByList(ProcessEsInspectDelayApplyVO processEsInspectDelayApplyVO) {
QueryWrapper<ProcessEsInspectDelayApplyVO> queryWrapper = getProcessEsInspectDelayApplyLambdaQueryWrapper(processEsInspectDelayApplyVO);
List<ProcessEsInspectDelayApplyVO> processEsInspectDelayApplyVOS = processEsInspectDelayApplyMapper.queryByList(queryWrapper);
setProperty(processEsInspectDelayApplyVOS);
return processEsInspectDelayApplyVOS;
}
private void setProperty(List<ProcessEsInspectDelayApplyVO> processEsInspectDelayApplyVOS) {
for (ProcessEsInspectDelayApplyVO processEsInspectDelayApplyVO : processEsInspectDelayApplyVOS) {
// 翻译
processEsInspectDelayApplyVO.setInspectUserDictText(sysUserService.dictByIdsOrUserNames(processEsInspectDelayApplyVO.getInspectUser(), ""));
processEsInspectDelayApplyVO.setLiaisonsDictText(sysUserService.dictByIdsOrUserNames(processEsInspectDelayApplyVO.getLiaisons(), ""));
}
}
@NotNull
private static QueryWrapper<ProcessEsInspectDelayApplyVO> getProcessEsInspectDelayApplyLambdaQueryWrapper(ProcessEsInspectDelayApplyVO processEsInspectDelayApplyVO) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
QueryWrapper<ProcessEsInspectDelayApplyVO> queryWrapper = new QueryWrapper<>();
if (StringUtils.isNotBlank(processEsInspectDelayApplyVO.getNodeId()) && EsInspectDelayApplyCommon.PROCESS_NODE_3.equals(processEsInspectDelayApplyVO.getNodeId())){
queryWrapper.eq("t.liaisons", sysUser.getId());
}
queryWrapper.eq(StringUtils.isNotBlank(processEsInspectDelayApplyVO.getProjectId()), "t.project_id", processEsInspectDelayApplyVO.getProjectId());
queryWrapper.eq("t.del_flag", 0);
queryWrapper.orderByAsc("t.create_time");
return queryWrapper;
}
/**
* 保存
*
* @param processEsInspectDelayApply
* @return
*/
@Override
public void add(ProcessEsInspectDelayApply processEsInspectDelayApply) {
Date now = new Date();
processEsInspectDelayApply.setCreateTime(now);
processEsInspectDelayApply.setUpdateTime(now);
save(processEsInspectDelayApply);
}
/**
* 更新
*
* @param processEsInspectDelayApply
* @return
*/
@Override
public void editById(ProcessEsInspectDelayApply processEsInspectDelayApply) {
Date now = new Date();
processEsInspectDelayApply.setUpdateTime(now);
saveOrUpdate(processEsInspectDelayApply);
}
/**
* 通过id删除
*
* @param id
* @return
*/
@Override
public void deleteById(String id) {
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public ProcessEsInspectDelayApply queryById(String id) {
return getById(id);
}
}
@@ -1,49 +0,0 @@
package com.jero.modules.activiti.process.esinspectdelayapply.vo;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.process.esinspectdelayapply.entity.ProcessEsInspectDelayApply;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* @ClassName: EsinspectFlowVO
* @Description:
* @Author: yjz
* @Date: 2023-11-27 18:41
* @Version: 1.0
**/
@Data
public class EsInspectDelayApplyFlowVO {
/**流程信息*/
@ApiModelProperty(value = "流程信息")
private ProcessAll processAll;
/**流程审批信息*/
@ApiModelProperty(value = "流程审批信息")
private ProcessApprovalRecord processApprovalRecord;
/**业务基本信息*/
@ApiModelProperty(value = "业务基本信息")
private List<ProcessEsInspectDelayApply> processEsInspectDelayApplyList;
/**业务基本信息 展示用*/
@ApiModelProperty(value = "业务基本信息 展示用")
private List<ProcessEsInspectDelayApplyVO> processEsInspectDelayApplyVOList;
/**map*/
@ApiModelProperty(value = "map")
private Map<String, Object> map;
/**草稿信息json字符串*/
@ApiModelProperty(value = "草稿信息json字符串")
private String infoJsonStr;
/**
* 流程全局删除ids
*/
@ApiModelProperty(value="流程全局删除ids")
private String processAllDelIds;
/**
* 保存来源
*/
@ApiModelProperty(value="保存来源(1:待办 2:草稿)")
private String saveSource;
}
@@ -1,61 +0,0 @@
package com.jero.modules.activiti.process.esinspectdelayapply.vo;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardInspectVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @ClassName: 稽查延期申请流程VO
* @Description:
* @Author: yjz
* @Date: 2023-11-27 18:41
* @Version: 1.0
**/
@Data
public class ProcessEsInspectDelayApplyVO extends EnterpriseStandardInspectVo {
/**项目id*/
@Excel(name = "项目id", width = 15)
@ApiModelProperty(value = "项目id")
private java.lang.String projectId;
/**企标稽查id*/
@Excel(name = "企标稽查id", width = 15)
@ApiModelProperty(value = "企标稽查id")
private String inspectId;
/**申请延期日期*/
@Excel(name = "申请延期日期", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "申请延期日期")
private Date requestDelayDate;
/**延期说明*/
@Excel(name = "延期说明", width = 15)
@ApiModelProperty(value = "延期说明")
private String delayDescription;
/**稽查联络人*/
@Excel(name = "稽查联络人", width = 15)
@ApiModelProperty(value = "稽查联络人")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String liaisons;
/** 稽查联络人 翻译*/
@ApiModelProperty(value = "稽查联络人 翻译")
@TableField(exist = false)
private String liaisonsDictText;
/** 稽查负责人 翻译*/
@ApiModelProperty(value = "稽查负责人 翻译")
@TableField(exist = false)
private String inspectUserDictText;
/**节点id*/
@ApiModelProperty(value = "节点id")
@TableField(exist = false)
private String nodeId;
}
@@ -1,62 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.common;
/**
* @ClassName: EsInspectPlanCommon
* @Description:
* @Author: yjz
* @Date: 2023-11-09 13:47
* @Version: 1.0
**/
public class EsInspectPlanCommon {
private EsInspectPlanCommon(){
}
/**
* 企业稽查计划key
*/
public static final String KEY = "inspect_plan";
/**
* 企业稽查计划流name
*/
public static final String NAME = "企业稽查计划";
/**
* 企业稽查计划流程节点: 1:稽查联络人发起计划,2:稽查征求意见对象填写意见,3:稽查联络人汇总,4:相关人员会签,5:联络人主管级领导批准
*/
public static final String PROCESS_NODE_1 = "liaisons_start";
/**
* 企业稽查计划流程节点: 1:稽查联络人发起计划,2:稽查征求意见对象填写意见,3:稽查联络人汇总,4:相关人员会签,5:联络人主管级领导批准
*/
public static final String PROCESS_NODE_2 = "opinion_fill";
/**
* 企业稽查计划流程节点: 1:稽查联络人发起计划,2:稽查征求意见对象填写意见,3:稽查联络人汇总,4:相关人员会签,5:联络人主管级领导批准
*/
public static final String PROCESS_NODE_3 = "liaisons_collect";
/**
* 企业稽查计划流程节点: 1:稽查联络人发起计划,2:稽查征求意见对象填写意见,3:稽查联络人汇总,4:相关人员会签,5:联络人主管级领导批准
*/
public static final String PROCESS_NODE_4 = "involve_countersign";
/**
* 企业稽查计划流程节点: 1:稽查联络人发起计划,2:稽查征求意见对象填写意见,3:稽查联络人汇总,4:相关人员会签,5:联络人主管级领导批准
*/
public static final String PROCESS_NODE_5 = "leader_approval";
/**
* 稽查状态: 1:进行中,2:稽查中,3:已完成,4:拖期
*/
public static final String INSPECT_STATUS_1 = "1";
/**
* 稽查状态: 1:进行中,2:稽查中,3:已完成,4:拖期
*/
public static final String INSPECT_STATUS_2 = "2";
/**
* 稽查状态: 1:进行中,2:稽查中,3:已完成,4:拖期
*/
public static final String INSPECT_STATUS_3 = "3";
/**
* 稽查状态: 1:进行中,2:稽查中,3:已完成,4:拖期
*/
public static final String INSPECT_STATUS_4 = "4";
}
@@ -1,126 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation;
import com.jero.common.util.MessageUtils;
import com.jero.common.util.SnowflakeUtils;
import com.jero.modules.activiti.process.esinspectplan.service.IEsInspectPlanFlowService;
import com.jero.modules.activiti.process.esinspectplan.vo.EsInspectPlanFlowVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.*;
/**
* @ClassName: 企标稽查计划流程
* @Description:
* @Author: yjz
* @Date: 2023-11-09 11:45
* @Version: 1.0
**/
@Api(tags="企标稽查计划流程")
@RestController
@RequestMapping("/process/esInspectPlanFlow")
@Slf4j
public class EsInspectPlanFlowController {
private final IEsInspectPlanFlowService esInspectPlanFlowService;
public EsInspectPlanFlowController(@Lazy IEsInspectPlanFlowService esInspectPlanFlowService) {
this.esInspectPlanFlowService = esInspectPlanFlowService;
}
/**
* 企标稽查计划流程-生成项目id
* @return 项目id
*/
@AutoLog(value = "企标稽查计划流程-生成项目id")
@ApiOperation(value="企标稽查计划流程-生成项目id", notes="企标稽查计划流程-生成项目id")
@GetMapping(value = "/getProjectId")
public String getProjectId() {
return String.valueOf(SnowflakeUtils.snowflake());
}
/**
* 企标稽查计划流程-流程发起
* @param esInspectPlanFlowVO 企标稽查计划流程VO对象
* @return 结果对象
*/
@AutoLog(value = "企标稽查计划流程-流程发起")
@ApiOperation(value="企标稽查计划流程-流程发起", notes="企标稽查计划流程-流程发起")
@PostMapping(value = "/flowStart")
public Result<T> flowStart(@RequestBody EsInspectPlanFlowVO esInspectPlanFlowVO) {
esInspectPlanFlowService.flowStart(esInspectPlanFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 企标稽查计划流程-流程保存
* @param esInspectPlanFlowVO 企标稽查计划流程VO对象
* @return 结果对象
*/
@AutoLog(value = "企标稽查计划流程-流程保存")
@ApiOperation(value="企标稽查计划流程-流程保存", notes="企标稽查计划流程-流程保存")
@PostMapping(value = "/flowSave")
public Result<T> flowSave(@RequestBody EsInspectPlanFlowVO esInspectPlanFlowVO) {
esInspectPlanFlowService.flowSave(esInspectPlanFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 企标稽查计划流程-办理详情
* @param projectId 项目id
* @return 结果对象
*/
@AutoLog(value = "企标稽查计划流程-办理详情")
@ApiOperation(value="企标稽查计划流程-办理详情", notes="企标稽查计划流程-办理详情")
@GetMapping(value = "/queryDetailByProjectId")
@Translation
public Result<EsInspectPlanFlowVO> queryDetailByProjectId(@ApiParam("项目id") String projectId, @ApiParam("任务id") String taskId) {
return Result.OK(esInspectPlanFlowService.queryDetailByProjectId(projectId, taskId));
}
/**
* 企标稽查计划流程-流程审批
* @param esInspectPlanFlowVO 企标稽查计划流程VO对象
* @return 结果对象
*/
@AutoLog(value = "企标稽查计划流程-流程审批")
@ApiOperation(value="企标稽查计划流程-流程审批", notes="企标稽查计划流程-流程审批")
@PostMapping(value = "/flowApproval")
public Result<T> flowApproval(@RequestBody EsInspectPlanFlowVO esInspectPlanFlowVO) {
esInspectPlanFlowService.flowApproval(esInspectPlanFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 企标稽查计划流程-驳回
* @param esInspectPlanFlowVO 企标稽查计划流程VO对象
* @return 结果对象
*/
@AutoLog(value = "企标稽查计划流程-驳回")
@ApiOperation(value="企标稽查计划流程-驳回", notes="企标稽查计划流程-驳回")
@PostMapping(value = "/flowReject")
public Result<T> flowReject(@RequestBody EsInspectPlanFlowVO esInspectPlanFlowVO) {
log.info("");
esInspectPlanFlowService.flowApproval(esInspectPlanFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 企标稽查计划流程-流程转办
* @return 结果对象
*/
@AutoLog(value = "企标稽查计划流程-流程转办")
@ApiOperation(value="企标稽查计划流程-流程转办", notes="企标稽查计划流程-流程转办")
@GetMapping(value = "/flowTransfer")
public Result<T> flowTransfer(@ApiParam("任务id") String taskId, @ApiParam("用户id") String userId) {
esInspectPlanFlowService.flowTransfer(taskId, userId);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
}
@@ -1,223 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.util.MessageUtils;
import com.jero.modules.activiti.process.esinspectplan.entity.ProcessEsInspectPlan;
import com.jero.modules.activiti.process.esinspectplan.service.IProcessEsInspectPlanService;
import com.jero.modules.system.vo.IdMapBody;
import com.jero.modules.system.vo.IdsMapBody;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
/**
* @Description: 企标稽查计划业务表
* @Author: jero-boot
* @Date: 2023-11-09
* @Version: V1.0
*/
@Api(tags="企标稽查计划业务表")
@RestController
@RequestMapping("/process/processEsInspectPlan")
@Slf4j
public class ProcessEsInspectPlanController extends JeroController<ProcessEsInspectPlan, IProcessEsInspectPlanService> {
@Autowired
private IProcessEsInspectPlanService processEsInspectPlanService;
/**
* 分页列表查询
*
* @param processEsInspectPlan
* @param pageNo
* @param pageSize
* @return
*/
@AutoLog(value = "企标稽查计划业务表-分页列表查询")
@ApiOperation(value="企标稽查计划业务表-分页列表查询", notes="企标稽查计划业务表-分页列表查询")
@GetMapping(value = "/page")
@Translation
public Result<IPage<ProcessEsInspectPlan>> queryPageList(ProcessEsInspectPlan processEsInspectPlan,
@ApiParam("当前页") @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@ApiParam("每页条数") @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
IPage<ProcessEsInspectPlan> pageList = processEsInspectPlanService.queryPage(processEsInspectPlan, pageNo, pageSize);
return Result.OK(pageList);
}
/**
* 列表查询
*
* @param processEsInspectPlan
* @return
*/
@AutoLog(value = "企标稽查计划业务表-列表查询")
@ApiOperation(value="企标稽查计划业务表-列表查询", notes="企标稽查计划业务表-列表查询")
@GetMapping(value = "/list")
@Translation
public Result<List<ProcessEsInspectPlan>> queryList(ProcessEsInspectPlan processEsInspectPlan) {
List<ProcessEsInspectPlan> list = processEsInspectPlanService.queryList(processEsInspectPlan);
return Result.OK(list);
}
/**
* 添加
*
* @param processEsInspectPlan
* @return
*/
@AutoLog(value = "企标稽查计划业务表-添加")
@ApiOperation(value="企标稽查计划业务表-添加", notes="企标稽查计划业务表-添加")
@PostMapping(value = "/add")
public Result<T> add(@Validated @RequestBody ProcessEsInspectPlan processEsInspectPlan) {
processEsInspectPlanService.add(processEsInspectPlan);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 编辑
*
* @param processEsInspectPlan
* @return
*/
@AutoLog(value = "企标稽查计划业务表-编辑")
@ApiOperation(value="企标稽查计划业务表-编辑", notes="企标稽查计划业务表-编辑")
@PostMapping(value = "/edit")
public Result<T> edit(@Validated @RequestBody ProcessEsInspectPlan processEsInspectPlan) {
processEsInspectPlanService.editById(processEsInspectPlan);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 通过id删除
*
* @param map
* @return
*/
@AutoLog(value = "企标稽查计划业务表-通过id删除")
@ApiOperation(value="企标稽查计划业务表-通过id删除", notes="企标稽查计划业务表-通过id删除")
@PostMapping(value = "/delete")
public Result<T> delete(@RequestBody IdMapBody map) {
if (StringUtils.isBlank(map.getId())){
return Result.error("请选择数据!");
}
processEsInspectPlanService.deleteById(map.getId());
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param map
* @return
*/
@AutoLog(value = "企标稽查计划业务表-批量删除")
@ApiOperation(value="企标稽查计划业务表-批量删除", notes="企标稽查计划业务表-批量删除")
@PostMapping(value = "/deleteBatch")
public Result<T> deleteBatch(@RequestBody IdsMapBody map) {
if (StringUtils.isBlank(map.getIds())){
return Result.error("请选择数据!");
}
this.processEsInspectPlanService.deleteByIds(Arrays.asList(map.getIds().split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
@AutoLog(value = "企标稽查计划业务表-通过id查询")
@ApiOperation(value="企标稽查计划业务表-通过id查询", notes="企标稽查计划业务表-通过id查询")
@GetMapping(value = "/queryById")
public Result<ProcessEsInspectPlan> queryById(@ApiParam("id") @RequestParam(name="id",required=true) String id) {
ProcessEsInspectPlan processEsInspectPlan = processEsInspectPlanService.queryById(id);
if(processEsInspectPlan==null) {
return Result.error("未找到对应数据");
}
return Result.OK(processEsInspectPlan);
}
/**
* 导出excel
*
* @param request
* @param processEsInspectPlan
*/
@AutoLog(value = "企标稽查计划业务表-导出excel")
@ApiOperation(value="企标稽查计划业务表-导出excel", notes="企标稽查计划业务表-导出excel")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, ProcessEsInspectPlan processEsInspectPlan) {
return super.exportXls(request, processEsInspectPlan, ProcessEsInspectPlan.class, "企标稽查计划业务表");
}
/**
* 下载导入模板(稽查联络人发起计划)
*
*/
@AutoLog(value = "企标稽查计划业务表-下载导入模板(稽查联络人发起计划)")
@ApiOperation(value="企标稽查计划业务表-下载导入模板(稽查联络人发起计划)", notes="企标稽查计划业务表-下载导入模板(稽查联络人发起计划)")
@GetMapping(value = "/templateDownloadByStart")
public void templateDownloadByStart(HttpServletResponse response) throws IOException {
processEsInspectPlanService.templateDownloadByStart(response);
}
/**
* 下载导入模板
*
*/
@AutoLog(value = "企标稽查计划业务表-下载导入模板(稽查征求意见对象填写意见)")
@ApiOperation(value="企标稽查计划业务表-下载导入模板(稽查征求意见对象填写意见)", notes="企标稽查计划业务表-下载导入模板(稽查征求意见对象填写意见)")
@GetMapping(value = "/templateDownloadByStartByOpinionFill")
public void templateDownloadByStartByOpinionFill(HttpServletResponse response) throws IOException {
processEsInspectPlanService.templateDownloadByStartByOpinionFill(response);
}
/**
* 通过excel导入数据(稽查联络人发起计划)
*
* @param request
* @param response
* @return
*/
@AutoLog(value = "企标稽查计划业务表-通过excel导入数据(稽查联络人发起计划)")
@ApiOperation(value="企标稽查计划业务表-通过excel导入数据(稽查联络人发起计划)", notes="企标稽查计划业务表-通过excel导入数据(稽查联络人发起计划)")
@PostMapping(value = "/importExcelByStart")
@Translation
public Result<List<ProcessEsInspectPlan>> importExcelByStart(HttpServletRequest request, HttpServletResponse response) throws Exception {
return processEsInspectPlanService.importExcelByStart(request, response);
}
/**
* 通过excel导入数据(稽查征求意见对象填写意见)
*
* @param request
* @param response
* @return
*/
@AutoLog(value = "企标稽查计划业务表-通过excel导入数据(稽查征求意见对象填写意见)")
@ApiOperation(value="企标稽查计划业务表-通过excel导入数据(稽查征求意见对象填写意见)", notes="企标稽查计划业务表-通过excel导入数据(稽查征求意见对象填写意见)")
@PostMapping(value = "/importExcelByOpinionFill")
@Translation
public Result<List<ProcessEsInspectPlan>> importExcelByOpinionFill(HttpServletRequest request, HttpServletResponse response) throws Exception {
return processEsInspectPlanService.importExcelByOpinionFill(request, response);
}
}
@@ -1,192 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.util.MessageUtils;
import com.jero.modules.activiti.process.esinspectplan.entity.ProcessEsInspectPlanOpinion;
import com.jero.modules.activiti.process.esinspectplan.service.IProcessEsInspectPlanOpinionService;
import com.jero.modules.system.vo.IdMapBody;
import com.jero.modules.system.vo.IdsMapBody;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
/**
* @Description: 企标稽查计划业务_意见表
* @Author: jero-boot
* @Date: 2023-11-13
* @Version: V1.0
*/
@Api(tags="企标稽查计划业务_意见表")
@RestController
@RequestMapping("/process/processEsInspectPlanOpinion")
@Slf4j
public class ProcessEsInspectPlanOpinionController extends JeroController<ProcessEsInspectPlanOpinion, IProcessEsInspectPlanOpinionService> {
@Autowired
private IProcessEsInspectPlanOpinionService processEsInspectPlanOpinionService;
/**
* 分页列表查询
*
* @param processEsInspectPlanOpinion
* @param pageNo
* @param pageSize
* @return
*/
@AutoLog(value = "企标稽查计划业务_意见表-分页列表查询")
@ApiOperation(value="企标稽查计划业务_意见表-分页列表查询", notes="企标稽查计划业务_意见表-分页列表查询")
@GetMapping(value = "/page")
public Result<IPage<ProcessEsInspectPlanOpinion>> queryPageList(ProcessEsInspectPlanOpinion processEsInspectPlanOpinion,
@ApiParam("当前页") @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@ApiParam("每页条数") @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
IPage<ProcessEsInspectPlanOpinion> pageList = processEsInspectPlanOpinionService.queryPage(processEsInspectPlanOpinion, pageNo, pageSize);
return Result.OK(pageList);
}
/**
* 列表查询
*
* @param processEsInspectPlanOpinion
* @param req
* @return
*/
@AutoLog(value = "企标稽查计划业务_意见表-列表查询")
@ApiOperation(value="企标稽查计划业务_意见表-列表查询", notes="企标稽查计划业务_意见表-列表查询")
@GetMapping(value = "/list")
public Result<List<ProcessEsInspectPlanOpinion>> queryList(ProcessEsInspectPlanOpinion processEsInspectPlanOpinion) {
List<ProcessEsInspectPlanOpinion> list = processEsInspectPlanOpinionService.queryList(processEsInspectPlanOpinion);
return Result.OK(list);
}
/**
* 添加
*
* @param processEsInspectPlanOpinion
* @return
*/
@AutoLog(value = "企标稽查计划业务_意见表-添加")
@ApiOperation(value="企标稽查计划业务_意见表-添加", notes="企标稽查计划业务_意见表-添加")
@PostMapping(value = "/add")
public Result<T> add(@Validated @RequestBody ProcessEsInspectPlanOpinion processEsInspectPlanOpinion) {
processEsInspectPlanOpinionService.add(processEsInspectPlanOpinion);
return Result.OK("操作成功!");
}
/**
* 企标稽查计划业务_意见表-填写意见
*
* @param processEsInspectPlanOpinion
* @return
*/
@AutoLog(value = "企标稽查计划业务表-填写意见")
@ApiOperation(value="企标稽查计划业务表-填写意见", notes="企标稽查计划业务表-填写意见")
@PostMapping(value = "/fillInOpinion")
public Result<T> fillInOpinion(@Validated @RequestBody ProcessEsInspectPlanOpinion processEsInspectPlanOpinion) {
processEsInspectPlanOpinionService.saveOrUpdate(processEsInspectPlanOpinion);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 企标稽查计划业务_意见表-获取最新的填写意见
*
* @param inspectPlanId
* @return
*/
@AutoLog(value = "企标稽查计划业务表-获取当前登陆人最新的填写意见")
@ApiOperation(value="企标稽查计划业务表-获取当前登陆人最新的填写意见", notes="企标稽查计划业务表-获取当前登陆人最新的填写意见")
@GetMapping(value = "/queryLastOpinionByInspectPlanId")
public Result<ProcessEsInspectPlanOpinion> queryLastOpinion(String inspectPlanId) {
return Result.OK(processEsInspectPlanOpinionService.queryLastOpinion(inspectPlanId));
}
/**
* 编辑
*
* @param processEsInspectPlanOpinion
* @return
*/
@AutoLog(value = "企标稽查计划业务_意见表-编辑")
@ApiOperation(value="企标稽查计划业务_意见表-编辑", notes="企标稽查计划业务_意见表-编辑")
@PostMapping(value = "/edit")
public Result<T> edit(@Validated @RequestBody ProcessEsInspectPlanOpinion processEsInspectPlanOpinion) {
processEsInspectPlanOpinionService.editById(processEsInspectPlanOpinion);
return Result.OK("操作成功!");
}
/**
* 通过id删除
*
* @param map
* @return
*/
@AutoLog(value = "企标稽查计划业务_意见表-通过id删除")
@ApiOperation(value="企标稽查计划业务_意见表-通过id删除", notes="企标稽查计划业务_意见表-通过id删除")
@PostMapping(value = "/delete")
public Result<T> delete(@RequestBody IdMapBody map) {
if (StringUtils.isBlank(map.getId())){
return Result.error("请选择数据!");
}
processEsInspectPlanOpinionService.deleteById(map.getId());
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param map
* @return
*/
@AutoLog(value = "企标稽查计划业务_意见表-批量删除")
@ApiOperation(value="企标稽查计划业务_意见表-批量删除", notes="企标稽查计划业务_意见表-批量删除")
@PostMapping(value = "/deleteBatch")
public Result<T> deleteBatch(@RequestBody IdsMapBody map) {
if (StringUtils.isBlank(map.getIds())){
return Result.error("请选择数据!");
}
this.processEsInspectPlanOpinionService.deleteByIds(Arrays.asList(map.getIds().split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
@AutoLog(value = "企标稽查计划业务_意见表-通过id查询")
@ApiOperation(value="企标稽查计划业务_意见表-通过id查询", notes="企标稽查计划业务_意见表-通过id查询")
@GetMapping(value = "/queryById")
public Result<ProcessEsInspectPlanOpinion> queryById(@ApiParam("id") @RequestParam(name="id",required=true) String id) {
ProcessEsInspectPlanOpinion processEsInspectPlanOpinion = processEsInspectPlanOpinionService.queryById(id);
if(processEsInspectPlanOpinion==null) {
return Result.error("未找到对应数据");
}
return Result.OK(processEsInspectPlanOpinion);
}
/**
* 导出excel
*
* @param request
* @param processEsInspectPlanOpinion
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, ProcessEsInspectPlanOpinion processEsInspectPlanOpinion) {
return super.exportXls(request, processEsInspectPlanOpinion, ProcessEsInspectPlanOpinion.class, "企标稽查计划业务_意见表");
}
}
@@ -1,110 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.entity;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import com.jero.modules.laws.documenttool.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* @Description: 企标稽查计划业务表
* @Author: jero-boot
* @Date: 2023-11-09
* @Version: V1.0
*/
@Data
@TableName("process_es_inspect_plan")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="process_es_inspect_plan对象", description="企标稽查计划业务表")
public class ProcessEsInspectPlan extends BaseEntity {
/**项目id*/
@ApiModelProperty(value = "项目id")
private String projectId;
/**稽查依据标准号*/
@Excel(name = "*稽查依据标准号", width = 15)
@ApiModelProperty(value = "稽查依据标准号")
private String inspectNo;
/**稽查依据标准名称*/
@Excel(name = "*稽查依据标准名称", width = 16)
@ApiModelProperty(value = "稽查依据标准名称")
private String inspectName;
/**计划稽查对象*/
@Excel(name = "*计划稽查对象", width = 15)
@ApiModelProperty(value = "计划稽查对象")
@Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id")
private String inspectObject;
/**主责标准化工作组*/
@Excel(name = "*主责标准化工作组", width = 16)
@ApiModelProperty(value = "主责标准化工作组")
private String standardizationWorkGroup;
/**所属部门*/
@Excel(name = "*所属部门", width = 15)
@ApiModelProperty(value = "所属部门")
@Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id")
private String belongDept;
/**计划稽查日期*/
// @Excel(name = "计划稽查日期", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "计划稽查日期")
private Date planInspectDate;
/**计划稽查日期 导入用*/
@Excel(name = "*计划稽查日期", width = 15, format = "yyyy-MM-dd")
@ApiModelProperty(value = "计划稽查日期 导入用")
@TableField(exist = false)
private String planInspectDates;
/**稽查负责人*/
@Excel(name = "*稽查负责人", width = 15)
@ApiModelProperty(value = "稽查负责人")
private String inspectUser;
/**稽查负责人 翻译*/
@ApiModelProperty(value = "稽查负责人 翻译")
@TableField(exist = false)
private String inspectUserDictText;
/**标准化组对接人*/
@Excel(name = "*标准化组对接人", width = 15)
@ApiModelProperty(value = "标准化组对接人")
private String standardizationDockingUser;
/**标准化组对接人 翻译*/
@ApiModelProperty(value = "标准化组对接人 翻译")
@TableField(exist = false)
private String standardizationDockingUserDictText;
/**征求意见对象*/
@Excel(name = "*征求意见对象", width = 15)
@ApiModelProperty(value = "征求意见对象")
private String objectOfConsultation;
/**征求意见对象 翻译*/
@ApiModelProperty(value = "征求意见对象 翻译")
@TableField(exist = false)
private String objectOfConsultationDictText;
/**备注*/
@ApiModelProperty(value = "备注")
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String remarks;
/**意见*/
@ApiModelProperty(value = "意见")
@TableField(exist = false)
private List<ProcessEsInspectPlanOpinion> processEsInspectPlanOpinionList;
/**意见*/
@ApiModelProperty(value = "意见")
@TableField(exist = false)
private ProcessEsInspectPlanOpinion processEsInspectPlanOpinion;
/**节点id*/
@ApiModelProperty(value = "节点id")
@TableField(exist = false)
private String nodeId;
}
@@ -1,34 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jero.modules.laws.documenttool.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* @Description: 企标稽查计划业务_意见表
* @Author: jero-boot
* @Date: 2023-11-13
* @Version: V1.0
*/
@Data
@TableName("process_es_inspect_plan_opinion")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="process_es_inspect_plan_opinion对象", description="企标稽查计划业务_意见表")
public class ProcessEsInspectPlanOpinion extends BaseEntity {
private static final long serialVersionUID = 1L;
/**企标稽查计划业务表Id*/
@Excel(name = "企标稽查计划业务表Id", width = 15)
@ApiModelProperty(value = "企标稽查计划业务表Id")
private java.lang.String inspectPlanId;
/**意见*/
@Excel(name = "意见", width = 15)
@ApiModelProperty(value = "意见")
private java.lang.String opinion;
}
@@ -1,23 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.modules.activiti.process.esinspectplan.entity.ProcessEsInspectPlan;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
* @Description: 企标稽查计划业务表
* @Author: jero-boot
* @Date: 2023-11-09
* @Version: V1.0
*/
public interface ProcessEsInspectPlanMapper extends BaseMapper<ProcessEsInspectPlan> {
/**
* 根据流程实例id查询流程变量
* @param instanceId
* @return
*/
Map<String, Object> findActRuVariableByInstanceId(@Param("instanceId") String instanceId, @Param("key") String key);
}
@@ -1,23 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.modules.activiti.process.esinspectplan.entity.ProcessEsInspectPlanOpinion;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Description: 企标稽查计划业务_意见表
* @Author: jero-boot
* @Date: 2023-11-13
* @Version: V1.0
*/
public interface ProcessEsInspectPlanOpinionMapper extends BaseMapper<ProcessEsInspectPlanOpinion> {
/**
* 标准化组-根据账号分组查最新
* @param id
* @return
*/
List<ProcessEsInspectPlanOpinion> findLastByGroup(@Param("inspectPlanId") String inspectPlanId);
}
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.activiti.process.esinspectplan.mapper.ProcessEsInspectPlanMapper">
<select id="findActRuVariableByInstanceId" resultType="java.util.Map">
select * from ACT_RU_VARIABLE where PROC_INST_ID_ = #{instanceId} and NAME_ = #{key}
</select>
</mapper>
@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.activiti.process.esinspectplan.mapper.ProcessEsInspectPlanOpinionMapper">
<select id="findLastByGroup"
resultType="com.jero.modules.activiti.process.esinspectplan.entity.ProcessEsInspectPlanOpinion">
select *
from (select create_by, max(id) id
from process_es_inspect_plan_opinion
where inspect_plan_id = #{inspectPlanId}
and del_flag = 0
group by create_by) t1
left join process_es_inspect_plan_opinion t2 on t1.create_by = t2.create_by and t1.id = t2.id
</select>
</mapper>
@@ -1,64 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.service;
import com.jero.modules.activiti.entity.ProcessNode;
import com.jero.modules.activiti.process.esinspectplan.vo.EsInspectPlanFlowVO;
import java.util.List;
/**
* @InterfaceName: 企标稽查计划流程
* @Description:
* @Author: yjz
* @Date: 2023-11-09 11:47
* @Version: 1.0
**/
public interface IEsInspectPlanFlowService {
/**
* 企标稽查计划流程-流程发起
* @param esInspectPlanFlowVO
*/
void flowStart(EsInspectPlanFlowVO esInspectPlanFlowVO);
/**
* 企标稽查计划流程-流程保存
* @param esInspectPlanFlowVO
*/
void flowSave(EsInspectPlanFlowVO esInspectPlanFlowVO);
/**
* 企标稽查计划流程-办理详情
*
* @param projectId
* @param taskId
* @return
*/
EsInspectPlanFlowVO queryDetailByProjectId(String projectId, String taskId);
/**
* 企标稽查计划流程-人员信息
* @return
*/
List<ProcessNode> queryPersonInfo(String processDefinitionName, String processInstanceId);
/**
* 企标稽查计划流程-流程审批
* @param esInspectPlanFlowVO
*/
void flowApproval(EsInspectPlanFlowVO esInspectPlanFlowVO);
/**
* 企标稽查计划流程-流程转办
*
* @param taskId
* @param userId
*/
void flowTransfer(String taskId, String userId);
/**
* 企标稽查计划流程-是否是最后一个节点
*
* @param processInstanceId
* @return
*/
boolean isLastNode(String processInstanceId);
}
@@ -1,89 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.activiti.process.esinspectplan.entity.ProcessEsInspectPlanOpinion;
import java.util.List;
/**
* @Description: 企标稽查计划业务_意见表
* @Author: jero-boot
* @Date: 2023-11-13
* @Version: V1.0
*/
public interface IProcessEsInspectPlanOpinionService extends IService<ProcessEsInspectPlanOpinion> {
/**
* 分页查询
*
* @param processEsInspectPlanOpinion
* @param pageNo
* @param pageSize
* @return
*/
IPage<ProcessEsInspectPlanOpinion> queryPage(ProcessEsInspectPlanOpinion processEsInspectPlanOpinion, Integer pageNo, Integer pageSize);
/**
* 列表查询
*
* @param processEsInspectPlanOpinion
* @return
*/
List<ProcessEsInspectPlanOpinion> queryList(ProcessEsInspectPlanOpinion processEsInspectPlanOpinion);
/**
* 保存
*
* @param processEsInspectPlanOpinion
* @return
*/
void add(ProcessEsInspectPlanOpinion processEsInspectPlanOpinion);
/**
* 更新
*
* @param processEsInspectPlanOpinion
* @return
*/
void editById(ProcessEsInspectPlanOpinion processEsInspectPlanOpinion);
/**
* 通过id删除
*
* @param id
* @return
*/
void deleteById(String id);
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
ProcessEsInspectPlanOpinion queryById(String id);
/**
* 企标稽查计划业务表-获取当前登陆人最新的填写意见
* @param inspectPlanId
* @return
*/
ProcessEsInspectPlanOpinion queryLastOpinion(String inspectPlanId);
/**
* 标准化组-根据账号分组查最新
* @param inspectPlanId
* @return
*/
List<ProcessEsInspectPlanOpinion> findLastByGroup(String inspectPlanId);
}
@@ -1,117 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.common.api.vo.Result;
import com.jero.modules.activiti.process.esinspectplan.entity.ProcessEsInspectPlan;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
* @Description: 企标稽查计划业务表
* @Author: jero-boot
* @Date: 2023-11-09
* @Version: V1.0
*/
public interface IProcessEsInspectPlanService extends IService<ProcessEsInspectPlan> {
/**
* 分页查询
*
* @param processEsInspectPlan
* @param pageNo
* @param pageSize
* @param req
* @return
*/
IPage<ProcessEsInspectPlan> queryPage(ProcessEsInspectPlan processEsInspectPlan, Integer pageNo, Integer pageSize);
/**
* 列表查询
*
* @param processEsInspectPlan
* @return
*/
List<ProcessEsInspectPlan> queryList(ProcessEsInspectPlan processEsInspectPlan);
/**
* 保存
*
* @param processEsInspectPlan
* @return
*/
void add(ProcessEsInspectPlan processEsInspectPlan);
/**
* 更新
*
* @param processEsInspectPlan
* @return
*/
void editById(ProcessEsInspectPlan processEsInspectPlan);
/**
* 通过id删除
*
* @param id
* @return
*/
void deleteById(String id);
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
ProcessEsInspectPlan queryById(String id);
/**
* 通过流程实例id和参数名查询流程变量
*
* @param instanceId
* @param key
* @return
*/
Map<String, Object> findActRuVariableByInstanceId(String instanceId, String key);
/**
* 企标稽查计划业务表-通过excel导入数据(稽查联络人发起计划)
* @param request
* @param response
* @return
*/
Result<List<ProcessEsInspectPlan>> importExcelByStart(HttpServletRequest request, HttpServletResponse response) throws Exception;
/**
* 下载导入模板
* @return
*/
void templateDownloadByStart(HttpServletResponse response) throws IOException;
/**
* 通过excel导入数据(稽查征求意见对象填写意见)
* @param request
* @param response
* @return
*/
Result<List<ProcessEsInspectPlan>> importExcelByOpinionFill(HttpServletRequest request, HttpServletResponse response) throws Exception;
/**
* 企标稽查计划业务表-下载导入模板(稽查征求意见对象填写意见)
* @param response
*/
void templateDownloadByStartByOpinionFill(HttpServletResponse response) throws IOException;
}
@@ -1,39 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.service.impl;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.WorkCenterService;
import com.jero.modules.activiti.util.SpringContextUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @ClassName: EsInspectPlanFlowService
* @Description:
* @Author: yjz
* @Date: 2024-01-11 21:19
* @Version: 1.0
**/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
@Service
public class EsInspectPlanFlow implements WorkCenterService {
/**
* 强制撤回
* @param processAll 流程总表
*/
@Override
public void changeToDraft(ProcessAll processAll) {
// 删除业务表数据
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
processAllService.physicalDeleteByProjectId("process_es_inspect_plan", processAll.getProjectId());
}
@Override
public void handleTransfer(ProcessAll processAll, ProcessApprovalRecord processApprovalRecord, String toUserId, String userId) {
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
processAllService.specialTransfer(processAll, processApprovalRecord, toUserId, userId);
}
}
@@ -1,576 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.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.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.jero.common.api.dto.message.SendMessageDTO;
import com.jero.common.api.vo.SendMessageAPI;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.SnowflakeUtils;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.entity.ProcessNode;
import com.jero.modules.activiti.entity.ProcessNodeLink;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessStatusEnum;
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.esAbolish.entity.ProcessEsAbolish;
import com.jero.modules.activiti.process.esAbolish.service.ProcessEsAbolishService;
import com.jero.modules.activiti.process.esArchive.entity.ProcessEsArchive;
import com.jero.modules.activiti.process.esArchive.service.ProcessEsArchiveService;
import com.jero.modules.activiti.process.esinspectplan.common.EsInspectPlanCommon;
import com.jero.modules.activiti.process.esinspectplan.entity.ProcessEsInspectPlan;
import com.jero.modules.activiti.process.esinspectplan.entity.ProcessEsInspectPlanOpinion;
import com.jero.modules.activiti.process.esinspectplan.service.IEsInspectPlanFlowService;
import com.jero.modules.activiti.process.esinspectplan.service.IProcessEsInspectPlanOpinionService;
import com.jero.modules.activiti.process.esinspectplan.service.IProcessEsInspectPlanService;
import com.jero.modules.activiti.process.esinspectplan.vo.EsInspectPlanFlowVO;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.activiti.service.ProcessNodeService;
import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspect;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectObject;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectObjectService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectService;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.*;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* @ClassName: 企标稽查计划流程
* @Description:
* @Author: yjz
* @Date: 2023-11-09 11:47
* @Version: 1.0
**/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
@Service
public class EsInspectPlanFlowServiceImpl implements IEsInspectPlanFlowService {
private final ProcessAllService processAllService;
private final ProcessApprovalRecordService processApprovalRecordService;
private final ProcessDraftService processDraftService;
private final IProcessEsInspectPlanService processEsInspectPlanService;
private final RepositoryService repositoryService;
private final ISysUserService sysUserService;
private final ProcessNodeService processNodeService;
private final ProcessNodeLinkService processNodeLinkService;
private final SendMessageAPI sendMessageAPI;
private final EnterpriseStandardInspectService enterpriseStandardInspectService;
private final EnterpriseStandardInspectObjectService enterpriseStandardInspectObjectService;
private final IProcessEsInspectPlanOpinionService processEsInspectPlanOpinionService;
private final ProcessEsAbolishService processEsAbolishService;
private final ProcessEsArchiveService processEsArchiveService;
public EsInspectPlanFlowServiceImpl(ProcessAllService processAllService,
ProcessApprovalRecordService processApprovalRecordService,
ProcessDraftService processDraftService,
IProcessEsInspectPlanService processEsInspectPlanService,
RepositoryService repositoryService,
ISysUserService sysUserService,
ProcessNodeService processNodeService,
ProcessNodeLinkService processNodeLinkService,
SendMessageAPI sendMessageAPI,
EnterpriseStandardInspectService enterpriseStandardInspectService,
EnterpriseStandardInspectObjectService enterpriseStandardInspectObjectService,
IProcessEsInspectPlanOpinionService processEsInspectPlanOpinionService,
ProcessEsAbolishService processEsAbolishService,
ProcessEsArchiveService processEsArchiveService) {
this.processAllService = processAllService;
this.processApprovalRecordService = processApprovalRecordService;
this.processDraftService = processDraftService;
this.processEsInspectPlanService = processEsInspectPlanService;
this.repositoryService = repositoryService;
this.sysUserService = sysUserService;
this.processNodeService = processNodeService;
this.processNodeLinkService = processNodeLinkService;
this.sendMessageAPI = sendMessageAPI;
this.enterpriseStandardInspectService = enterpriseStandardInspectService;
this.enterpriseStandardInspectObjectService = enterpriseStandardInspectObjectService;
this.processEsInspectPlanOpinionService = processEsInspectPlanOpinionService;
this.processEsAbolishService = processEsAbolishService;
this.processEsArchiveService = processEsArchiveService;
}
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
@Resource
private TaskService taskService;
@Resource
private IProcessHandleService processHandleService;
private static final String COUNTERSIGN = "countersign";
private static final String COUNTERSIGN_TAG = "countersignTag";
@Override
public void flowStart(EsInspectPlanFlowVO esInspectPlanFlowVO) {
// 流程信息
ProcessAll processAll = esInspectPlanFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectPlanFlowVO.getProcessApprovalRecord();
// map(参数)
Map<String, Object> map = esInspectPlanFlowVO.getMap();
// 根据流程key启动流程 同时 设置审批人员参数
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey(EsInspectPlanCommon.KEY, map);
// 再次设置map
runtimeService.setVariables(processInstance.getId(), map);
// 更新流程总表信息
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT_PLAN.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()));
// 根据流程实例id查询
Task task = taskService.createTaskQuery()
.processInstanceId(processInstance.getId())
.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()));
// 处理业务表数据
handleBusinessData(esInspectPlanFlowVO);
// 新增流程实例节点关联用户表
processNodeLinkService.saveNodeUserLink(processInstance.getProcessDefinitionId(), processInstance.getId(), listToString(map));
// 自动完成第一个节点
taskService.complete(task.getId());
}
private void handleBusinessData(EsInspectPlanFlowVO esInspectPlanFlowVO) {
List<ProcessEsInspectPlan> processEsInspectPlanList = esInspectPlanFlowVO.getProcessEsInspectPlanList();
// 删除数据
if (StringUtils.isNotBlank(esInspectPlanFlowVO.getProcessAllDelIds())) {
List<String> idList = Arrays.asList(esInspectPlanFlowVO.getProcessAllDelIds().split(","));
processEsInspectPlanService.removeByIds(idList);
processEsInspectPlanOpinionService.removeByIds(idList);
}
ProcessAll processAll = esInspectPlanFlowVO.getProcessAll();
String projectId = processAll.getProjectId();
// 废止/封存判断
checkout(processEsInspectPlanList);
List<ProcessEsInspectPlan> updateProcessEsInspectPlanList = processEsInspectPlanList.stream()
.filter(v -> StringUtils.isNotBlank(v.getId()))
.map(v -> {
v.setProjectId(projectId);
return v;
})
.collect(Collectors.toList());
processEsInspectPlanService.updateBatchById(updateProcessEsInspectPlanList);
List<ProcessEsInspectPlan> saveProcessEsInspectPlanList = processEsInspectPlanList.stream()
.filter(v -> StringUtils.isBlank(v.getId()))
.map(v -> {
v.setId(String.valueOf(SnowflakeUtils.snowflake()));
v.setProjectId(projectId);
return v;
})
.collect(Collectors.toList());
processEsInspectPlanService.saveBatch(saveProcessEsInspectPlanList);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// 处理意见
if (EsInspectPlanCommon.PROCESS_NODE_2.equals(processAll.getNodeId())) {
ArrayList<ProcessEsInspectPlanOpinion> processEsInspectPlanOpinions = new ArrayList<>();
for (ProcessEsInspectPlan processEsInspectPlan : processEsInspectPlanList) {
if (!Objects.isNull(processEsInspectPlan.getProcessEsInspectPlanOpinion())) {
ProcessEsInspectPlanOpinion processEsInspectPlanOpinion = processEsInspectPlan.getProcessEsInspectPlanOpinion();
processEsInspectPlanOpinion.setInspectPlanId(processEsInspectPlan.getId());
processEsInspectPlanOpinion.setCreateBy(sysUser.getUsername());
processEsInspectPlanOpinions.add(processEsInspectPlanOpinion);
}
}
// 保存意见
processEsInspectPlanOpinionService.saveOrUpdateBatch(processEsInspectPlanOpinions);
}
}
private void checkout(List<ProcessEsInspectPlan> processEsInspectPlanList){
List<String> errorList = new ArrayList<>();
for (ProcessEsInspectPlan processEsInspectPlan : processEsInspectPlanList) {
String inspectNo = processEsInspectPlan.getInspectNo();
// 企标废止
ProcessEsAbolish processEsAbolish = processEsAbolishService.getOne(
new LambdaQueryWrapper<ProcessEsAbolish>()
.eq(ProcessEsAbolish::getStandardNumber, inspectNo)
.orderByDesc(ProcessEsAbolish::getCreateTime)
.last("limit 1"), false);
if (!Objects.isNull(processEsAbolish)){
ProcessAll processAll = processAllService.getOne(
new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProcessInstanceId, processEsAbolish.getProcessInstanceId()));
if (!Objects.isNull(processEsAbolish)
&& ProcessStatusEnum.INCOMPLETE.getValue().equals(processAll.getPrcStatus())){
errorList.add(inspectNo);
}
}
// 企标封存
ProcessEsArchive processEsArchive = processEsArchiveService.getOne(
new LambdaQueryWrapper<ProcessEsArchive>()
.eq(ProcessEsArchive::getStandardNumber, inspectNo)
.orderByDesc(ProcessEsArchive::getCreateTime)
.last("limit 1"), false);
if (!Objects.isNull(processEsArchive)){
ProcessAll processAll = processAllService.getOne(
new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProcessInstanceId, processEsArchive.getProcessInstanceId()));
if (!Objects.isNull(processAll)
&& ProcessStatusEnum.INCOMPLETE.getValue().equals(processAll.getPrcStatus())){
errorList.add(inspectNo);
}
}
}
if (!errorList.isEmpty()){
throw new JeroBootException("企标编号为" + String.join(",", errorList) + "的数据已在企标废止/封存流程进行中,不可发起!");
}
}
@Override
public void flowSave(EsInspectPlanFlowVO esInspectPlanFlowVO) {
// 流程信息
ProcessAll processAll = esInspectPlanFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectPlanFlowVO.getProcessApprovalRecord();
// 处理业务表数据
handleBusinessData(esInspectPlanFlowVO);
// 稽查联络人汇总节点保存会签信息
if (StringUtils.isNotBlank(processAll.getTaskId())){
Task task = taskService.createTaskQuery().taskId(processAll.getTaskId()).singleResult();
if (EsInspectPlanCommon.PROCESS_NODE_3.equals(task.getTaskDefinitionKey())){
taskService.setVariable(processAll.getTaskId(), COUNTERSIGN, esInspectPlanFlowVO.getCountersign());
taskService.setVariable(processAll.getTaskId(), COUNTERSIGN_TAG, esInspectPlanFlowVO.getCountersignTag());
}
}
// 更新流程信息
processAllService.update(new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getId, processAll.getId())
.set(ProcessAll::getPrcName, processAll.getPrcName())
.set(ProcessAll::getPrcMes, processAll.getPrcMes())
.set(ProcessAll::getDueTime, processAll.getDueTime()));
// 更新流程审批信息
processApprovalRecordService.update(new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getTaskId, processAll.getTaskId())
.set(ProcessApprovalRecord::getCommitText, processApprovalRecord.getCommitText())
.set(ProcessApprovalRecord::getCommitFile, processApprovalRecord.getCommitFile()));
}
private Map<String, Object> listToString(Map<String, Object> map) {
Map<String, Object> stringObjectHashMap;
stringObjectHashMap = map.entrySet().stream().map(v -> {
if (v.getValue() instanceof List) {
List<String> list = (List<String>)v.getValue();
v.setValue(String.join(",", list));
}
return v;
}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
return stringObjectHashMap;
}
@Override
public EsInspectPlanFlowVO queryDetailByProjectId(String projectId, String taskId) {
EsInspectPlanFlowVO esInspectPlanFlowVO = new EsInspectPlanFlowVO();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId)
.orderByDesc(ProcessAll::getCreateTime), false);
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
// 是否存在草稿
List<ProcessDraft> processDraftList = processDraftService.list(new LambdaQueryWrapper<ProcessDraft>()
.eq(ProcessDraft::getProjectId, projectId)
.eq(ProcessDraft::getUserId, loginUser.getId())
.and(qw -> qw.ne(ProcessDraft::getSaveSource, "3")
.or().isNull(ProcessDraft::getSaveSource)));
if (!processDraftList.isEmpty()){
String id = "";
if(Objects.isNull(processAll)){
processAll = new ProcessAll();
id = String.valueOf(SnowflakeUtils.snowflake());
}else {
id = processAll.getId();
}
// 存在草稿
ProcessDraft processDraft = processDraftList.get(0);
// 属性拷贝
BeanUtils.copyProperties(processDraft, processAll);
processAll.setId(id);
if (StringUtils.isNotBlank(processDraft.getHandleFile())){
processApprovalRecord.setCommitFile(processDraft.getHandleFile());
}
if (StringUtils.isNotBlank(processDraft.getHandleText())){
processApprovalRecord.setCommitText(processDraft.getHandleText());
}
if (!Objects.isNull(processDraft.getProcessDueDate())){
processAll.setDueTime(processDraft.getProcessDueDate());
}
if (StringUtils.isNotBlank(processDraft.getProcessDescription())){
processAll.setPrcMes(processDraft.getProcessDescription());
}
if (StringUtils.isNotBlank(processDraft.getInfoJsonStr())){
esInspectPlanFlowVO.setInfoJsonStr(processDraft.getInfoJsonStr());
}
}else {
// 不存在草稿
processApprovalRecord = processApprovalRecordService.getOne(new LambdaQueryWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getUserId, loginUser.getId())
.eq(ProcessApprovalRecord::getTaskId, taskId)
, false);
}
// 会签信息
countersign(taskId, esInspectPlanFlowVO);
// 业务表信息
ProcessEsInspectPlan processEsInspectPlan = new ProcessEsInspectPlan();
processEsInspectPlan.setProjectId(projectId);
processEsInspectPlan.setNodeId(processApprovalRecord.getNodeId());
esInspectPlanFlowVO.setProcessEsInspectPlanList(processEsInspectPlanService.queryList(processEsInspectPlan));
esInspectPlanFlowVO.setProcessAll(processAll);
esInspectPlanFlowVO.setProcessApprovalRecord(processApprovalRecord);
return esInspectPlanFlowVO;
}
private void countersign(String taskId, EsInspectPlanFlowVO esInspectPlanFlowVO) {
if (StringUtils.isNotBlank(taskId)){
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
if (EsInspectPlanCommon.PROCESS_NODE_3.equals(task.getTaskDefinitionKey())){
String countersign = (String) taskService.getVariable(taskId, COUNTERSIGN);
String countersignTag = (String) taskService.getVariable(taskId, COUNTERSIGN_TAG);
if (StringUtils.isNotBlank(countersign)){
esInspectPlanFlowVO.setCountersign(countersign);
esInspectPlanFlowVO.setCountersignDictText(sysUserService.dictByIdsOrUserNames(countersign, ""));
}
if (StringUtils.isNotBlank(countersignTag)){
esInspectPlanFlowVO.setCountersignTag(countersignTag);
}
}
}
}
@Override
public List<ProcessNode> queryPersonInfo(String processDefinitionName, String processInstanceId) {
List<ProcessNode> nodeList = new ArrayList<>();
// 查询流程定义
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.processDefinitionName(processDefinitionName)
.latestVersion()
.singleResult();
if (!Objects.isNull(processDefinition)) {
// 获取流程节点信息
List<ProcessNode> processNodeList = processNodeService.list(
new LambdaQueryWrapper<ProcessNode>()
.eq(ProcessNode::getProcessDefinitionId, processDefinition.getId())
.orderByAsc(ProcessNode::getSort));
// 查询流程实例关联用户
for (ProcessNode processNode : processNodeList) {
String userIds = "";
if (StringUtils.isNotBlank(processInstanceId)) {
List<ProcessNodeLink>processNodeLinkList = processNodeLinkService.list(
new LambdaQueryWrapper<ProcessNodeLink>()
.eq(ProcessNodeLink::getProcessDefinitionId, processDefinition.getId())
.eq(ProcessNodeLink::getProcessNodeId, processNode.getId()));
if (!processNodeLinkList.isEmpty()){
List<String> userIdList = processNodeLinkList.stream().map(ProcessNodeLink::getUserId).collect(Collectors.toList());
List<SysUser> sysUserList = sysUserService.listByIds(userIdList);
userIds = sysUserList.stream().map(SysUser::getId).collect(Collectors.joining(","));
}
}
processNode.setLinkUserIds(userIds);
nodeList.add(processNode);
}
}
return nodeList;
}
@Override
public void flowApproval(EsInspectPlanFlowVO esInspectPlanFlowVO) {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// 流程信息
ProcessAll processAll = esInspectPlanFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectPlanFlowVO.getProcessApprovalRecord();
// map(参数)
Map<String, Object> map = esInspectPlanFlowVO.getMap();
// 更新流程信息
processAllService.update(new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getId, processAll.getId())
.set(ProcessAll::getPrcName, processAll.getPrcName())
.set(ProcessAll::getPrcMes, processAll.getPrcMes())
.set(ProcessAll::getDueTime, processAll.getDueTime()));
// 更新流程审批信息
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()));
Task task = taskService.createTaskQuery().taskId(processAll.getTaskId()).singleResult();
if (task != null) {
// 稽查联络人汇总节点保存会签信息
saveCountersign(esInspectPlanFlowVO, map);
// 处理业务表数据
handleBusinessData(esInspectPlanFlowVO);
// 获取稽查联络人
String liaisons = taskService.getVariable(task.getId(), "liaisons", String.class);
// 完成任务
taskService.complete(task.getId(), map);
// 再次更新流程审批信息
processApprovalRecordService.update(new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getUserId, loginUser.getId())
.eq(ProcessApprovalRecord::getTaskId, processAll.getTaskId())
.set(ProcessApprovalRecord::getCommitFlag, processApprovalRecord.getCommitFlag()));
// 可跳过节点处理
if (map.containsKey("pass") && (boolean) map.get("pass")){
// 更新流程实例节点关联用户表
processNodeLinkService.saveNodeUserLink(processAll.getProcessDefinitionId(), processAll.getProcessInstanceId(), listToString(map));
}else if (map.containsKey("pass") && !(boolean) map.get("pass")){
// 驳回删除可跳过节点人员信息
ProcessNode processNode = processNodeService.getOne(new LambdaQueryWrapper<ProcessNode>()
.eq(ProcessNode::getProcessDefinitionId, processAll.getProcessDefinitionId())
.eq(ProcessNode::getVariableName, "involveList")
.orderByDesc(ProcessNode::getCreateTime));
processNodeLinkService.update(
new LambdaUpdateWrapper<ProcessNodeLink>()
.eq(ProcessNodeLink::getProcessDefinitionId, processAll.getProcessDefinitionId())
.eq(ProcessNodeLink::getProcessInstanceId, processAll.getProcessInstanceId())
.eq(ProcessNodeLink::getProcessNodeId, processNode.getId())
.set(ProcessNodeLink::getUserId, null));
}
// 判断是否是最后一个节点
if (isLastNode(processAll.getProcessInstanceId())
&& map.containsKey("pass") && (boolean) map.get("pass")){
// 企标稽查计划业务表数据
List<ProcessEsInspectPlan> processEsInspectPlanList = processEsInspectPlanService.list(
new LambdaQueryWrapper<ProcessEsInspectPlan>()
.eq(ProcessEsInspectPlan::getProjectId, processAll.getProjectId()));
// 企标稽查计划 生成数据 保存企标库
saveDataToInspect(processEsInspectPlanList);
try {
// 抄送消息 通过hiwork 给稽查联络人抄送消息
sendMessage(processAll, liaisons);
}catch (Exception e){
log.error("邮件发送失败:{}", e.getMessage());
}
}
}
}
private void sendMessage(ProcessAll processAll, String liaisons) {
SendMessageDTO sendMessageDTO = new SendMessageDTO();
sendMessageDTO.setTemplateCode(MessageTemplateCodeCommon.ES_INSPECT_PLAN);
sendMessageDTO.setToUserId(liaisons);
Map<String, String> sendMap = new HashMap<>();
ProcessAll process = processAllService.getByProcessInstanceId(processAll.getProcessInstanceId());
sendMap.put("prcNum", process.getPrcNum());
sendMap.put("prcName", process.getPrcName());
sendMessageDTO.setMap(sendMap);
sendMessageAPI.sendMessage(sendMessageDTO);
}
private static void saveCountersign(EsInspectPlanFlowVO esInspectPlanFlowVO, Map<String, Object> map) {
if (map.containsKey("pass") && (boolean) map.get("pass")){
if (StringUtils.isNotBlank(esInspectPlanFlowVO.getCountersign())){
map.put(COUNTERSIGN, esInspectPlanFlowVO.getCountersign());
}
if (StringUtils.isNotBlank(esInspectPlanFlowVO.getCountersignTag())){
map.put(COUNTERSIGN_TAG, esInspectPlanFlowVO.getCountersignTag());
}
}
}
private void saveDataToInspect(List<ProcessEsInspectPlan> processEsInspectPlanList) {
List<EnterpriseStandardInspect> list = new ArrayList<>();
List<EnterpriseStandardInspectObject> objectList = new ArrayList<>();
for (ProcessEsInspectPlan processEsInspectPlan : processEsInspectPlanList) {
EnterpriseStandardInspect enterpriseStandardInspect = new EnterpriseStandardInspect();
// 属性拷贝
BeanUtils.copyProperties(processEsInspectPlan, enterpriseStandardInspect);
enterpriseStandardInspect.setCreateTime(null);
enterpriseStandardInspect.setUpdateTime(null);
enterpriseStandardInspect.setCreateBy(null);
enterpriseStandardInspect.setUpdateBy(null);
enterpriseStandardInspect.setProcessEsInspectPlanId(processEsInspectPlan.getId());
// 稽查状态
enterpriseStandardInspect.setInspectStatus(EsInspectPlanCommon.INSPECT_STATUS_1);
// 计划稽查对象
String inspectObject = processEsInspectPlan.getInspectObject();
String[] inspectObjectList = inspectObject.split(",");
for (String object : inspectObjectList) {
EnterpriseStandardInspectObject enterpriseStandardInspectObject = new EnterpriseStandardInspectObject();
enterpriseStandardInspectObject.setInspectId(processEsInspectPlan.getId());
enterpriseStandardInspectObject.setPlanInspectObject(object);
objectList.add(enterpriseStandardInspectObject);
}
list.add(enterpriseStandardInspect);
}
// 保存稽查
enterpriseStandardInspectService.saveBatch(list);
// 保存稽查对象
enterpriseStandardInspectObjectService.saveBatch(objectList);
}
@Override
public void flowTransfer(String taskId, String userId) {
processHandleService.transfer(taskId, userId);
}
@Override
public boolean isLastNode(String processInstanceId) {
// 查询流程实例状态
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
// 如果流程实例为null,表示流程已结束
return processInstance == null;
}
}
@@ -1,157 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.activiti.process.esinspectplan.entity.ProcessEsInspectPlanOpinion;
import com.jero.modules.activiti.process.esinspectplan.mapper.ProcessEsInspectPlanOpinionMapper;
import com.jero.modules.activiti.process.esinspectplan.service.IProcessEsInspectPlanOpinionService;
import com.jero.modules.system.service.ISysUserService;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
* @Description: 企标稽查计划业务_意见表
* @Author: jero-boot
* @Date: 2023-11-13
* @Version: V1.0
*/
@Service
@Transactional(rollbackFor = JeroBootException.class)
public class ProcessEsInspectPlanOpinionServiceImpl extends ServiceImpl<ProcessEsInspectPlanOpinionMapper, ProcessEsInspectPlanOpinion> implements IProcessEsInspectPlanOpinionService {
private final ProcessEsInspectPlanOpinionMapper processEsInspectPlanOpinionMapper;
private final ISysUserService sysUserService;
public ProcessEsInspectPlanOpinionServiceImpl(ProcessEsInspectPlanOpinionMapper processEsInspectPlanOpinionMapper,
ISysUserService sysUserService) {
this.processEsInspectPlanOpinionMapper = processEsInspectPlanOpinionMapper;
this.sysUserService = sysUserService;
}
/**
* 分页查询
*
* @param processEsInspectPlanOpinion
* @param pageNo
* @param pageSize
* @return
*/
@Override
public IPage<ProcessEsInspectPlanOpinion> queryPage(ProcessEsInspectPlanOpinion processEsInspectPlanOpinion, Integer pageNo, Integer pageSize) {
QueryWrapper<ProcessEsInspectPlanOpinion> queryWrapper = getProcessEsInspectPlanOpinionQueryWrapper(processEsInspectPlanOpinion);
Page<ProcessEsInspectPlanOpinion> page = new Page<>(pageNo, pageSize);
return page(page, queryWrapper);
}
/**
* 列表查询
*
* @param processEsInspectPlanOpinion
* @return
*/
@Override
public List<ProcessEsInspectPlanOpinion> queryList(ProcessEsInspectPlanOpinion processEsInspectPlanOpinion) {
QueryWrapper<ProcessEsInspectPlanOpinion> queryWrapper = getProcessEsInspectPlanOpinionQueryWrapper(processEsInspectPlanOpinion);
return list(queryWrapper);
}
@NotNull
private static QueryWrapper<ProcessEsInspectPlanOpinion> getProcessEsInspectPlanOpinionQueryWrapper(ProcessEsInspectPlanOpinion processEsInspectPlanOpinion) {
QueryWrapper<ProcessEsInspectPlanOpinion> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(StringUtils.isNotBlank(processEsInspectPlanOpinion.getInspectPlanId()), "opinion", processEsInspectPlanOpinion.getInspectPlanId());
queryWrapper.orderByDesc("create_time");
return queryWrapper;
}
/**
* 保存
*
* @param processEsInspectPlanOpinion
* @return
*/
@Override
public void add(ProcessEsInspectPlanOpinion processEsInspectPlanOpinion) {
Date now = new Date();
processEsInspectPlanOpinion.setCreateTime(now);
processEsInspectPlanOpinion.setUpdateTime(now);
save(processEsInspectPlanOpinion);
}
/**
* 更新
*
* @param processEsInspectPlanOpinion
* @return
*/
@Override
public void editById(ProcessEsInspectPlanOpinion processEsInspectPlanOpinion) {
Date now = new Date();
processEsInspectPlanOpinion.setUpdateTime(now);
saveOrUpdate(processEsInspectPlanOpinion);
}
/**
* 通过id删除
*
* @param id
* @return
*/
@Override
public void deleteById(String id) {
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public ProcessEsInspectPlanOpinion queryById(String id) {
return getById(id);
}
@Override
public ProcessEsInspectPlanOpinion queryLastOpinion(String inspectPlanId) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
LambdaQueryWrapper<ProcessEsInspectPlanOpinion> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ProcessEsInspectPlanOpinion::getInspectPlanId, inspectPlanId);
queryWrapper.eq(ProcessEsInspectPlanOpinion::getCreateBy, sysUser.getUsername());
queryWrapper.orderByDesc(ProcessEsInspectPlanOpinion::getCreateTime);
queryWrapper.last("limit 1");
return getOne(queryWrapper,false);
}
@Override
public List<ProcessEsInspectPlanOpinion> findLastByGroup(String inspectPlanId) {
List<ProcessEsInspectPlanOpinion> lastByGroup = processEsInspectPlanOpinionMapper.findLastByGroup(inspectPlanId);
for (ProcessEsInspectPlanOpinion processEsInspectPlanOpinion : lastByGroup) {
processEsInspectPlanOpinion.setCreateByDictText(sysUserService.dictByIdsOrUserNames("", processEsInspectPlanOpinion.getCreateBy()));
}
return lastByGroup;
}
}
@@ -1,533 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.BeanCopyUtils;
import com.jero.common.util.ImportExcelUtil;
import com.jero.common.util.IntekeyUtils;
import com.jero.modules.activiti.process.esinspectplan.common.EsInspectPlanCommon;
import com.jero.modules.activiti.process.esinspectplan.entity.ProcessEsInspectPlan;
import com.jero.modules.activiti.process.esinspectplan.entity.ProcessEsInspectPlanOpinion;
import com.jero.modules.activiti.process.esinspectplan.mapper.ProcessEsInspectPlanMapper;
import com.jero.modules.activiti.process.esinspectplan.service.IProcessEsInspectPlanOpinionService;
import com.jero.modules.activiti.process.esinspectplan.service.IProcessEsInspectPlanService;
import com.jero.modules.activiti.process.esinspectplan.vo.ProcessEsInspectPlanExcel;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.system.entity.SysDepart;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysDepartService;
import com.jero.modules.system.service.ISysUserService;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jetbrains.annotations.NotNull;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @Description: 企标稽查计划业务表
* @Author: jero-boot
* @Date: 2023-11-09
* @Version: V1.0
*/
@Service
@Transactional(rollbackFor = JeroBootException.class)
public class ProcessEsInspectPlanServiceImpl extends ServiceImpl<ProcessEsInspectPlanMapper, ProcessEsInspectPlan> implements IProcessEsInspectPlanService {
private final ProcessEsInspectPlanMapper processEsInspectPlanMapper;
private final ILawsEnterpriseStandardService lawsEnterpriseStandardService;
private final IProcessEsInspectPlanOpinionService processEsInspectPlanOpinionService;
private final ISysUserService sysUserService;
private final ISysDepartService sysDepartService;
public ProcessEsInspectPlanServiceImpl(ProcessEsInspectPlanMapper processEsInspectPlanMapper,
ILawsEnterpriseStandardService lawsEnterpriseStandardService,
IProcessEsInspectPlanOpinionService processEsInspectPlanOpinionService,
ISysUserService sysUserService,
ISysDepartService sysDepartService) {
this.processEsInspectPlanMapper = processEsInspectPlanMapper;
this.lawsEnterpriseStandardService = lawsEnterpriseStandardService;
this.processEsInspectPlanOpinionService = processEsInspectPlanOpinionService;
this.sysUserService = sysUserService;
this.sysDepartService = sysDepartService;
}
private static final String ERROR_MESSAGE = "模板错误,按照系统模板导入!";
private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
/**
* 分页查询
*
* @param processEsInspectPlan
* @param pageNo
* @param pageSize
* @return
*/
@Override
public IPage<ProcessEsInspectPlan> queryPage(ProcessEsInspectPlan processEsInspectPlan, Integer pageNo, Integer pageSize) {
QueryWrapper<ProcessEsInspectPlan> queryWrapper = getProcessEsInspectPlanQueryWrapper(processEsInspectPlan);
Page<ProcessEsInspectPlan> page = new Page<>(pageNo, pageSize);
Page<ProcessEsInspectPlan> pages = page(page, queryWrapper);
fillProperty(pages.getRecords());
return pages;
}
/**
* 列表查询
*
* @param processEsInspectPlan
* @return
*/
@Override
public List<ProcessEsInspectPlan> queryList(ProcessEsInspectPlan processEsInspectPlan) {
QueryWrapper<ProcessEsInspectPlan> queryWrapper = getProcessEsInspectPlanQueryWrapper(processEsInspectPlan);
List<ProcessEsInspectPlan> list = list(queryWrapper);
fillProperty(list);
return list;
}
private void fillProperty(List<ProcessEsInspectPlan> list) {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
for (ProcessEsInspectPlan processEsInspectPlan : list) {
// 意见
List<ProcessEsInspectPlanOpinion> opinionList = processEsInspectPlanOpinionService.findLastByGroup(processEsInspectPlan.getId());
for (ProcessEsInspectPlanOpinion processEsInspectPlanOpinion : opinionList) {
if (loginUser.getUsername().equals(processEsInspectPlanOpinion.getCreateBy())){
processEsInspectPlan.setProcessEsInspectPlanOpinion(processEsInspectPlanOpinion);
}
// 用户翻译
processEsInspectPlanOpinion.setCreateByDictText(sysUserService.dictByIdsOrUserNames("", processEsInspectPlanOpinion.getCreateBy()));
processEsInspectPlanOpinion.setUpdateByDictText(sysUserService.dictByIdsOrUserNames("", processEsInspectPlanOpinion.getUpdateBy()));
}
processEsInspectPlan.setProcessEsInspectPlanOpinionList(opinionList);
// 用户翻译
processEsInspectPlan.setInspectUserDictText(sysUserService.dictByIdsOrUserNames(processEsInspectPlan.getInspectUser(), ""));
processEsInspectPlan.setStandardizationDockingUserDictText(sysUserService.dictByIdsOrUserNames(processEsInspectPlan.getStandardizationDockingUser(), ""));
processEsInspectPlan.setObjectOfConsultationDictText(sysUserService.dictByIdsOrUserNames(processEsInspectPlan.getObjectOfConsultation(), ""));
processEsInspectPlan.setCreateByDictText(sysUserService.dictByIdsOrUserNames("", processEsInspectPlan.getCreateBy()));
processEsInspectPlan.setUpdateByDictText(sysUserService.dictByIdsOrUserNames("", processEsInspectPlan.getUpdateBy()));
}
}
@NotNull
private static QueryWrapper<ProcessEsInspectPlan> getProcessEsInspectPlanQueryWrapper(ProcessEsInspectPlan processEsInspectPlan) {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
QueryWrapper<ProcessEsInspectPlan> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(StringUtils.isNotBlank(processEsInspectPlan.getProjectId()), "project_id", processEsInspectPlan.getProjectId());
if (StringUtils.isNotBlank(processEsInspectPlan.getNodeId()) && EsInspectPlanCommon.PROCESS_NODE_2.equals(processEsInspectPlan.getNodeId())){
queryWrapper.and(qw ->
qw.like("object_of_consultation", loginUser.getId())
.or().eq("create_by", loginUser.getUsername()));
}
queryWrapper.orderByAsc("create_time");
return queryWrapper;
}
/**
* 保存
*
* @param processEsInspectPlan
* @return
*/
@Override
public void add(ProcessEsInspectPlan processEsInspectPlan) {
Date now = new Date();
processEsInspectPlan.setCreateTime(now);
processEsInspectPlan.setUpdateTime(now);
save(processEsInspectPlan);
}
/**
* 更新
*
* @param processEsInspectPlan
* @return
*/
@Override
public void editById(ProcessEsInspectPlan processEsInspectPlan) {
Date now = new Date();
processEsInspectPlan.setUpdateTime(now);
saveOrUpdate(processEsInspectPlan);
}
/**
* 通过id删除
*
* @param id
* @return
*/
@Override
public void deleteById(String id) {
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public ProcessEsInspectPlan queryById(String id) {
return getById(id);
}
@Override
public Map<String, Object> findActRuVariableByInstanceId(String instanceId, String key) {
return processEsInspectPlanMapper.findActRuVariableByInstanceId(instanceId, key);
}
@Override
public Result<List<ProcessEsInspectPlan>> importExcelByStart(HttpServletRequest request, HttpServletResponse response) throws Exception {
String projectId = request.getParameter("projectId");
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
// 获取上传文件对象
// 解密excel
MultipartFile file = IntekeyUtils.autoDecryptFile(entity.getValue());
ImportParams params = new ImportParams();
params.setNeedSave(true);
params.setHeadRows(1);
// excel表格头部校验
excelHeadVerify(file, ProcessEsInspectPlan.class, 0, 0);
List<ProcessEsInspectPlan> lists = ExcelImportUtil.importExcel(file.getInputStream(), ProcessEsInspectPlan.class, params);
if (CollectionUtils.isEmpty(lists) || lists.size() <= 2) {
return Result.error("没有数据可导入!");
}
lists.remove(0);
lists.remove(0);
List<ProcessEsInspectPlan> list = BeanCopyUtils.copyBeanList(lists, ProcessEsInspectPlan.class);
StringBuilder errorMSG = new StringBuilder();
// 字段校验
for (int i = 0; i < list.size(); i++) {
list.get(i).setProjectId(projectId);
String head = "" + (i + 4) + "行:";
List<String> firstVerify = firstVerify(list.get(i));
List<String> secondVerify = secondVerify(list.get(i));
List<String> thirdVerify = thirdVerify(list.get(i));
List<String> fifthVerify = fifthVerify(list.get(i));
List<String> sixthVerify = sixthVerify(list.get(i));
List<String> seventhVerify = seventhVerify(list.get(i));
firstVerify.addAll(secondVerify);
firstVerify.addAll(thirdVerify);
firstVerify.addAll(fifthVerify);
firstVerify.addAll(sixthVerify);
firstVerify.addAll(seventhVerify);
if (!firstVerify.isEmpty()){
errorMSG.append(head).append(String.join("", firstVerify)).append("<br/>");
}
}
//update-begin-author:taoyan date:20190528 for:批量插入数据
//update-end-author:taoyan date:20190528 for:批量插入数据
if (errorMSG.length() > 0){
throw new JeroBootException("文件导入失败:<br/>" + errorMSG);
}else {
fillProperty(list);
return Result.OK("文件导入成功!数据行数:" + list.size(), list);
}
}
return Result.error("文件导入失败!");
}
@Override
public void templateDownloadByStart(HttpServletResponse response) throws IOException {
ClassPathResource resource = new ClassPathResource("excelTemplate/企标稽查计划导入模板(稽查联络人发起计划).xls");
// 设置HTTP响应头,包括文件大小和内容类型
response.setContentType("application/vnd.ms-excel"); // 根据实际文件类型设置内容类型
response.setHeader("Content-Disposition", "attachment; filename=企标稽查计划导入模板.xls");
// 将文件内容写入HTTP响应输出流中
try (InputStream in = resource.getInputStream();
ServletOutputStream out = response.getOutputStream()) {
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
}
}
@Override
public Result<List<ProcessEsInspectPlan>> importExcelByOpinionFill(HttpServletRequest request, HttpServletResponse response) throws Exception {
String projectId = request.getParameter("projectId");
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
// 获取上传文件对象
MultipartFile file = IntekeyUtils.autoDecryptFile(entity.getValue());
ImportParams params = new ImportParams();
params.setNeedSave(true);
params.setHeadRows(1);
// excel表格头部校验
excelHeadVerify2(file, ProcessEsInspectPlanExcel.class, 0, 0);
List<ProcessEsInspectPlanExcel> lists = ExcelImportUtil.importExcel(file.getInputStream(), ProcessEsInspectPlanExcel.class, params);
if (CollectionUtils.isEmpty(lists) || lists.size() <= 2) {
throw new JeroBootException("没有数据可导入!");
}
lists.remove(0);
lists.remove(0);
List<ProcessEsInspectPlan> list = BeanCopyUtils.copyBeanList(lists, ProcessEsInspectPlan.class);
StringBuilder errorMSG = new StringBuilder();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// 字段校验
for (int i = 0; i < list.size(); i++) {
list.get(i).setProjectId(projectId);
String head = "" + (i + 4) + "行:";
List<String> firstVerify = firstVerify(list.get(i));
List<String> secondVerify = secondVerify(list.get(i));
List<String> thirdVerify = thirdVerify(list.get(i));
List<String> fifthVerify = fifthVerify(list.get(i));
List<String> sixthVerify = sixthVerify(list.get(i));
list.get(i).setObjectOfConsultation(loginUser.getId());
firstVerify.addAll(secondVerify);
firstVerify.addAll(thirdVerify);
firstVerify.addAll(fifthVerify);
firstVerify.addAll(sixthVerify);
if (!firstVerify.isEmpty()){
errorMSG.append(head).append(String.join("", firstVerify)).append("<br/>");
}
}
//update-begin-author:taoyan date:20190528 for:批量插入数据
//update-end-author:taoyan date:20190528 for:批量插入数据
if (errorMSG.length() > 0){
throw new JeroBootException("文件导入失败:<br/>" + errorMSG);
}else {
fillProperty(list);
return Result.OK("文件导入成功!数据行数:" + list.size(), list);
}
}
return Result.error("文件导入失败!");
}
@Override
public void templateDownloadByStartByOpinionFill(HttpServletResponse response) throws IOException {
ClassPathResource resource = new ClassPathResource("excelTemplate/企标稽查计划导入模板(稽查征求意见对象填写意见).xls");
// 设置HTTP响应头,包括文件大小和内容类型
response.setContentType("application/vnd.ms-excel"); // 根据实际文件类型设置内容类型
response.setHeader("Content-Disposition", "attachment; filename=企标稽查计划导入模板.xls");
// 将文件内容写入HTTP响应输出流中
try (InputStream in = resource.getInputStream();
ServletOutputStream out = response.getOutputStream()) {
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
}
}
private List<String> seventhVerify(ProcessEsInspectPlan processEsInspectPlan) {
List<String> errorList = new ArrayList<>();
if (StringUtils.isNotBlank(processEsInspectPlan.getObjectOfConsultation())){
String[] objectOfConsultationArr = processEsInspectPlan.getObjectOfConsultation().split(",");
List<String> userList = new ArrayList<>();
for (String objectOfConsultation : objectOfConsultationArr) {
SysUser sysUser = sysUserService.findUserByCalcNameWorkNo(objectOfConsultation);
if (Objects.isNull(sysUser)){
errorList.add("征求意见对象不存在!");
}else {
userList.add(sysUser.getId());
}
}
if (!userList.isEmpty()){
processEsInspectPlan.setObjectOfConsultation(String.join(",", userList));
}
}else {
errorList.add("征求意见对象不能为空!");
}
return errorList;
}
private List<String> sixthVerify(ProcessEsInspectPlan processEsInspectPlan) {
List<String> errorList = new ArrayList<>();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (StringUtils.isNotBlank(processEsInspectPlan.getStandardizationDockingUser())){
SysUser sysUser = sysUserService.findUserByCalcNameWorkNo(processEsInspectPlan.getStandardizationDockingUser());
if (Objects.isNull(sysUser)){
errorList.add("标准化组对接人不存在!");
}else {
processEsInspectPlan.setStandardizationDockingUser(sysUser.getId());
}
}else {
errorList.add("标准化组对接人不能为空!");
}
// 填充创建人
processEsInspectPlan.setCreateBy(loginUser.getUsername());
processEsInspectPlan.setCreateByDictText(loginUser.calcNameWorkNo());
return errorList;
}
private List<String> fifthVerify(ProcessEsInspectPlan processEsInspectPlan) {
List<String> errorList = new ArrayList<>();
if (StringUtils.isNotBlank(processEsInspectPlan.getPlanInspectDates())){
try{
Date parse = dateFormat.parse(processEsInspectPlan.getPlanInspectDates());
Calendar instance = Calendar.getInstance();
instance.setTime(parse);
int weekYear = instance.getWeekYear();
if (String.valueOf(weekYear).length() > 4){
throw new JeroBootException("");
}
processEsInspectPlan.setPlanInspectDate(parse);
}catch (Exception e){
errorList.add("计划稽查日期格式不正确!(正确格式:yyyy-MM-dd");
}
}else {
errorList.add("计划稽查日期不能为空!");
}
if (StringUtils.isNotBlank(processEsInspectPlan.getInspectUser())){
SysUser sysUser = sysUserService.findUserByCalcNameWorkNo(processEsInspectPlan.getInspectUser());
if (Objects.isNull(sysUser)){
errorList.add("稽查负责人不存在!");
}else {
processEsInspectPlan.setInspectUser(sysUser.getId());
}
}else {
errorList.add("稽查负责人不能为空!");
}
return errorList;
}
private List<String> thirdVerify(ProcessEsInspectPlan processEsInspectPlan) {
List<String> errorList = new ArrayList<>();
if (StringUtils.isNotBlank(processEsInspectPlan.getStandardizationWorkGroup())){
processEsInspectPlan.setStandardizationWorkGroup(processEsInspectPlan.getStandardizationWorkGroup());
}else {
errorList.add("主责标准化工作组不能为空!");
}
if (StringUtils.isNotBlank(processEsInspectPlan.getBelongDept())){
List<SysDepart> sysDepart = sysDepartService.list(
new LambdaQueryWrapper<SysDepart>()
.eq(SysDepart::getDepartName, processEsInspectPlan.getBelongDept()));
if (sysDepart.isEmpty()) {
errorList.add("所属部门不存在!");
}else {
processEsInspectPlan.setBelongDept(sysDepart.get(0).getId());
}
}else {
errorList.add("所属部门不能为空!");
}
return errorList;
}
private List<String> secondVerify(ProcessEsInspectPlan processEsInspectPlan) {
List<String> errorList = new ArrayList<>();
List<String> departList = new ArrayList<>();
if (StringUtils.isNotBlank(processEsInspectPlan.getInspectObject())){
String[] list = processEsInspectPlan.getInspectObject().split(",");
for (String s : list) {
List<SysDepart> sysDepart = sysDepartService.list(
new LambdaQueryWrapper<SysDepart>()
.eq(SysDepart::getDepartName, s));
if (sysDepart.isEmpty()) {
errorList.add("计划稽查对象不存在!");
}else {
departList.add(sysDepart.get(0).getId());
}
}
}else {
errorList.add("计划稽查对象不能为空!");
}
if (errorList.isEmpty()){
processEsInspectPlan.setInspectObject(String.join(",", departList));
}
return errorList;
}
private List<String> firstVerify(ProcessEsInspectPlan processEsInspectPlan) {
List<String> errorList = new ArrayList<>();
boolean flag = false;
if (StringUtils.isBlank(processEsInspectPlan.getInspectNo())){
errorList.add("稽查依据标准号不能为空!");
flag = true;
}
if (StringUtils.isNotBlank(processEsInspectPlan.getInspectName())){
List<LawsEnterpriseStandard> list = lawsEnterpriseStandardService.list(new LambdaQueryWrapper<LawsEnterpriseStandard>()
.eq(LawsEnterpriseStandard::getStandardName, processEsInspectPlan.getInspectName()));
if (list.isEmpty()) {
errorList.add("稽查依据标准名称不存在!");
}else if (flag){
long count = list.stream().filter(v -> v.getStandardNumber().equals(processEsInspectPlan.getInspectNo())
&& v.getStandardName().equals(processEsInspectPlan.getInspectName())).count();
if (count == 0){
errorList.add("稽查依据标准号和稽查依据标准名称不匹配!");
}
}
}else {
errorList.add("稽查依据标准名称不能为空!");
}
return errorList;
}
/**
* excel表头校验
* @param file
* @param carTypeClass
* @param titleRows
* @param i
*/
private void excelHeadVerify(MultipartFile file, Class<ProcessEsInspectPlan> carTypeClass, int titleRows, int i) {
try {
if (!(boolean) ImportExcelUtil.checkTemplateTitle(file, carTypeClass, titleRows, i)){
throw new JeroBootException(ERROR_MESSAGE);
}
}catch (Exception e) {
e.printStackTrace();
throw new JeroBootException(ERROR_MESSAGE);
}
}
/**
* excel表头校验
* @param file
* @param carTypeClass
* @param titleRows
* @param i
*/
private void excelHeadVerify2(MultipartFile file, Class<ProcessEsInspectPlanExcel> carTypeClass, int titleRows, int i) {
try {
if (!(boolean) ImportExcelUtil.checkTemplateTitle(file, carTypeClass, titleRows, i)){
throw new JeroBootException(ERROR_MESSAGE);
}
}catch (Exception e) {
e.printStackTrace();
throw new JeroBootException(ERROR_MESSAGE);
}
}
}
@@ -1,17 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.vo;
import lombok.Data;
/**
* @ClassName: EsInspectPlanFlowPersonVO
* @Description:
* @Author: yjz
* @Date: 2023-11-13 14:41
* @Version: 1.0
**/
@Data
public class EsInspectPlanFlowPersonVO {
private String key;
private String value;
private String description;
}
@@ -1,65 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.vo;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.process.esinspectplan.entity.ProcessEsInspectPlan;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* @ClassName: 企标稽查计划流程VO
* @Description:
* @Author: yjz
* @Date: 2023-11-09 11:51
* @Version: 1.0
**/
@Data
public class EsInspectPlanFlowVO {
/**流程信息*/
@ApiModelProperty(value = "流程信息")
private ProcessAll processAll;
/**流程审批信息*/
@ApiModelProperty(value = "流程审批信息")
private ProcessApprovalRecord processApprovalRecord;
/**业务基本信息*/
@ApiModelProperty(value = "业务基本信息")
private List<ProcessEsInspectPlan> processEsInspectPlanList;
/**map*/
@ApiModelProperty(value = "map")
private Map<String, Object> map;
/**草稿信息json字符串*/
@ApiModelProperty(value = "草稿信息json字符串")
private String infoJsonStr;
/**
* 是否会签
*/
@ApiModelProperty(value="是否会签")
private String countersignTag;
/**
* 会签人员
*/
@ApiModelProperty(value="会签人员")
private String countersign;
/**
* 会签人员 翻译
*/
@ApiModelProperty(value="会签人员 翻译")
private String countersignDictText;
/**
* 流程全局删除ids
*/
@ApiModelProperty(value="流程全局删除ids")
private String processAllDelIds;
/**
* 保存来源
*/
@ApiModelProperty(value="保存来源(1:待办 2:草稿)")
private String saveSource;
}
@@ -1,21 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @ClassName: FlowRefusalVO
* @Description:
* @Author: yjz
* @Date: 2023-11-13 18:28
* @Version: 1.0
**/
@Data
public class FlowRefusalVO {
/**任务id*/
@ApiModelProperty(value = "任务id")
private String taskId;
/**备注*/
@ApiModelProperty(value = "备注")
private String commitText;
}
@@ -1,96 +0,0 @@
package com.jero.modules.activiti.process.esinspectplan.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import com.jero.modules.activiti.process.esinspectplan.entity.ProcessEsInspectPlanOpinion;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @ClassName: ProcessEsInspectPlanExcel
* @Description:
* @Author: yjz
* @Date: 2023-12-29 17:27
* @Version: 1.0
**/
@Data
public class ProcessEsInspectPlanExcel implements Serializable {
/**项目id*/
@ApiModelProperty(value = "项目id")
private String projectId;
/**稽查依据标准号*/
@Excel(name = "*稽查依据标准号", width = 15)
@ApiModelProperty(value = "稽查依据标准号")
private String inspectNo;
/**稽查依据标准名称*/
@Excel(name = "*稽查依据标准名称", width = 16)
@ApiModelProperty(value = "稽查依据标准名称")
private String inspectName;
/**计划稽查对象*/
@Excel(name = "*计划稽查对象", width = 15)
@ApiModelProperty(value = "计划稽查对象")
@Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id")
private String inspectObject;
/**主责标准化工作组*/
@Excel(name = "*主责标准化工作组", width = 16)
@ApiModelProperty(value = "主责标准化工作组")
private String standardizationWorkGroup;
/**所属部门*/
@Excel(name = "*所属部门", width = 15)
@ApiModelProperty(value = "所属部门")
@Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id")
private String belongDept;
/**计划稽查日期*/
// @Excel(name = "计划稽查日期", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "计划稽查日期")
private Date planInspectDate;
/**计划稽查日期 导入用*/
@Excel(name = "*计划稽查日期", width = 15, format = "yyyy-MM-dd")
@ApiModelProperty(value = "计划稽查日期 导入用")
@TableField(exist = false)
private String planInspectDates;
/**稽查负责人*/
@Excel(name = "*稽查负责人", width = 15)
@ApiModelProperty(value = "稽查负责人")
private String inspectUser;
/**稽查负责人 翻译*/
@ApiModelProperty(value = "稽查负责人 翻译")
@TableField(exist = false)
private String inspectUserDictText;
/**标准化组对接人*/
@Excel(name = "*标准化组对接人", width = 15)
@ApiModelProperty(value = "标准化组对接人")
private String standardizationDockingUser;
/**标准化组对接人 翻译*/
@ApiModelProperty(value = "标准化组对接人 翻译")
@TableField(exist = false)
private String standardizationDockingUserDictText;
/**征求意见对象*/
@ApiModelProperty(value = "征求意见对象")
private String objectOfConsultation;
/**征求意见对象 翻译*/
@ApiModelProperty(value = "征求意见对象 翻译")
@TableField(exist = false)
private String objectOfConsultationDictText;
/**备注*/
@ApiModelProperty(value = "备注")
private String remarks;
/**意见*/
@ApiModelProperty(value = "意见")
@TableField(exist = false)
private List<ProcessEsInspectPlanOpinion> processEsInspectPlanOpinionList;
/**节点id*/
@ApiModelProperty(value = "节点id")
@TableField(exist = false)
private String nodeId;
}
@@ -1,63 +0,0 @@
package com.jero.modules.activiti.process.esinspectrectify.common;
/**
* @ClassName: EsInspectReportCommon
* @Description:
* @Author: yjz
* @Date: 2023-11-28 19:12
* @Version: 1.0
**/
public class EsInspectRectifyCommon {
private EsInspectRectifyCommon(){
}
/**
* 企标稽查整改key
*/
public static final String KEY = "inspect_rectify";
/**
* 企标稽查整改流name
*/
public static final String NAME = "企标稽查整改";
/**
* 企标稽查整改节点: 1:整改负责人上传整改结果,2:负责人主管级领导审批,3:稽查负责人审核
*/
public static final String PROCESS_NODE_1 = "responsible_start";
/**
* 企标稽查整改节点: 1:整改负责人上传整改结果,2:负责人主管级领导审批,3:稽查负责人审核
*/
public static final String PROCESS_NODE_2 = "leader_approval";
/**
* 企标稽查整改节点: 1:整改负责人上传整改结果,2:负责人主管级领导审批,3:稽查负责人审核
*/
public static final String PROCESS_NODE_3 = "responsible_approval";
/**
* 整改状态 1:整改中 2:审核中 3:整改已完成 4:无需整改
*/
public static final String INSPECT_RECTIFY_STATUS_1 = "1";
/**
* 整改状态 1:整改中 2:审核中 3:整改已完成 4:无需整改
*/
public static final String INSPECT_RECTIFY_STATUS_2 = "2";
/**
* 整改状态 1:整改中 2:审核中 3:整改已完成 4:无需整改
*/
public static final String INSPECT_RECTIFY_STATUS_3 = "3";
/**
* 整改状态 1:整改中 2:审核中 3:整改已完成 4:无需整改
*/
public static final String INSPECT_RECTIFY_STATUS_4 = "4";
/**
* 操作类型 1:提交整改结果 2:申请延期
*/
public static final String OPERATION_TYPE_1 = "1";
/**
* 操作类型 1:提交整改结果 2:申请延期
*/
public static final String OPERATION_TYPE_2 = "2";
}
@@ -1,116 +0,0 @@
package com.jero.modules.activiti.process.esinspectrectify.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation;
import com.jero.common.util.MessageUtils;
import com.jero.modules.activiti.process.esinspectrectify.service.IEsInspectRectifyFlowService;
import com.jero.modules.activiti.process.esinspectrectify.vo.EsInspectRectifyFlowVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.bind.annotation.*;
import java.text.ParseException;
/**
* @ClassName: 企标稽查整改
* @Description:
* @Author: yjz
* @Date: 2023-11-28 19:15
* @Version: 1.0
**/
@Api(tags="企标稽查整改")
@RestController
@RequestMapping("/process/esInspectRectifyFlow")
@Slf4j
public class EsInspectRectifyFlowController {
private final IEsInspectRectifyFlowService esInspectReportFlowService;
public EsInspectRectifyFlowController(IEsInspectRectifyFlowService esInspectReportFlowService) {
this.esInspectReportFlowService = esInspectReportFlowService;
}
/**
* 企标稽查整改-流程发起
* @param esInspectReportFlowVO 企标稽查整改VO对象
* @return 结果对象
*/
@AutoLog(value = "企标稽查整改-流程发起")
@ApiOperation(value="企标稽查整改-流程发起", notes="企标稽查整改-流程发起")
@PostMapping(value = "/flowStart")
public Result<T> flowStart(@RequestBody EsInspectRectifyFlowVO esInspectReportFlowVO) {
esInspectReportFlowService.flowStart(esInspectReportFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 企标稽查整改-流程保存
* @param esInspectReportFlowVO 企标稽查整改VO对象
* @return 结果对象
*/
@AutoLog(value = "企标稽查整改-流程保存")
@ApiOperation(value="企标稽查整改-流程保存", notes="企标稽查整改-流程保存")
@PostMapping(value = "/flowSave")
public Result<T> flowSave(@RequestBody EsInspectRectifyFlowVO esInspectReportFlowVO) {
esInspectReportFlowService.flowSave(esInspectReportFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 企标稽查整改-办理详情
* @param projectId 项目id
* @return 结果对象
*/
@AutoLog(value = "企标稽查整改-办理详情")
@ApiOperation(value="企标稽查整改-办理详情", notes="企标稽查整改-办理详情")
@GetMapping(value = "/queryDetailByProjectId")
@Translation
public Result<EsInspectRectifyFlowVO> queryDetailByProjectId(@ApiParam("项目id") String projectId, @ApiParam("任务id") String taskId) {
return Result.OK(esInspectReportFlowService.queryDetailByProjectId(projectId, taskId));
}
/**
* 企标稽查整改-流程审批
* @param esInspectReportFlowVO 企标稽查整改VO对象
* @return 结果对象
*/
@AutoLog(value = "企标稽查整改-流程审批")
@ApiOperation(value="企标稽查整改-流程审批", notes="企标稽查整改-流程审批")
@PostMapping(value = "/flowApproval")
public Result<T> flowApproval(@RequestBody EsInspectRectifyFlowVO esInspectReportFlowVO) throws ParseException {
esInspectReportFlowService.flowApproval(esInspectReportFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 企标稽查整改-驳回
* @param esInspectReportFlowVO 企标稽查计划流程VO对象
* @return 结果对象
*/
@AutoLog(value = "企标稽查整改-驳回")
@ApiOperation(value="企标稽查整改-驳回", notes="企标稽查整改-驳回")
@PostMapping(value = "/flowReject")
public Result<T> flowReject(@RequestBody EsInspectRectifyFlowVO esInspectReportFlowVO) throws ParseException {
log.info("");
esInspectReportFlowService.flowApproval(esInspectReportFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 企标稽查整改-流程转办
* @return 结果对象
*/
@AutoLog(value = "企标稽查整改-流程转办")
@ApiOperation(value="企标稽查整改-流程转办", notes="企标稽查整改-流程转办")
@GetMapping(value = "/flowTransfer")
public Result<T> flowTransfer(@ApiParam("任务id") String taskId, @ApiParam("用户id") String userId) {
esInspectReportFlowService.flowTransfer(taskId, userId);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
}
@@ -1,183 +0,0 @@
package com.jero.modules.activiti.process.esinspectrectify.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation;
import com.jero.common.system.base.controller.JeroController;
import com.jero.modules.activiti.process.esinspectrectify.entity.ProcessEsInspectRectify;
import com.jero.modules.activiti.process.esinspectrectify.service.IProcessEsInspectRectifyService;
import com.jero.modules.activiti.process.esinspectrectify.vo.ProcessEsInspectRectifyVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* @Description: 企标稽查整改业务表
* @Author: jero-boot
* @Date: 2023-11-28
* @Version: V1.0
*/
@Api(tags="企标稽查整改业务表")
@RestController
@RequestMapping("/esinspectreport/processEsInspectRectify")
@Slf4j
public class ProcessEsInspectRectifyController extends JeroController<ProcessEsInspectRectify, IProcessEsInspectRectifyService> {
@Autowired
private IProcessEsInspectRectifyService processEsInspectReportService;
/**
* 分页列表查询
*
* @param processEsInspectReport
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "企标稽查整改业务表-分页列表查询")
@ApiOperation(value="企标稽查整改业务表-分页列表查询", notes="企标稽查整改业务表-分页列表查询")
@GetMapping(value = "/page")
public Result<IPage<ProcessEsInspectRectify>> queryPageList(ProcessEsInspectRectify processEsInspectReport,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
IPage<ProcessEsInspectRectify> pageList = processEsInspectReportService.queryPage(processEsInspectReport, pageNo, pageSize, req);
return Result.OK(pageList);
}
/**
* 列表查询
*
* @param processEsInspectReport
* @param req
* @return
*/
@AutoLog(value = "企标稽查整改业务表-列表查询")
@ApiOperation(value="企标稽查整改业务表-列表查询", notes="企标稽查整改业务表-列表查询")
@GetMapping(value = "/list")
public Result<List<ProcessEsInspectRectify>> queryList(ProcessEsInspectRectify processEsInspectReport, HttpServletRequest req) {
List<ProcessEsInspectRectify> list = processEsInspectReportService.queryList(processEsInspectReport, req);
return Result.OK(list);
}
/**
* 添加
*
* @param processEsInspectReport
* @return
*/
@AutoLog(value = "企标稽查整改业务表-添加")
@ApiOperation(value="企标稽查整改业务表-添加", notes="企标稽查整改业务表-添加")
@PostMapping(value = "/add")
public Result<T> add(@Validated @RequestBody ProcessEsInspectRectify processEsInspectReport) {
processEsInspectReportService.add(processEsInspectReport);
return Result.OK("操作成功!");
}
/**
* 编辑
*
* @param processEsInspectReport
* @return
*/
@AutoLog(value = "企标稽查整改业务表-编辑")
@ApiOperation(value="企标稽查整改业务表-编辑", notes="企标稽查整改业务表-编辑")
@PostMapping(value = "/edit")
public Result<T> edit(@Validated @RequestBody ProcessEsInspectRectify processEsInspectReport) {
processEsInspectReportService.editById(processEsInspectReport);
return Result.OK("操作成功!");
}
/**
* 通过id删除
*
* @param map
* @return
*/
@AutoLog(value = "企标稽查整改业务表-通过id删除")
@ApiOperation(value="企标稽查整改业务表-通过id删除", notes="企标稽查整改业务表-通过id删除")
@PostMapping(value = "/delete")
public Result<T> delete(@RequestBody Map<String, String> map) {
if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){
return Result.error("请选择数据!");
}
processEsInspectReportService.deleteById(map.get("id"));
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param map
* @return
*/
@AutoLog(value = "企标稽查整改业务表-批量删除")
@ApiOperation(value="企标稽查整改业务表-批量删除", notes="企标稽查整改业务表-批量删除")
@PostMapping(value = "/deleteBatch")
public Result<T> deleteBatch(@RequestBody Map<String, String> map) {
if(!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))){
return Result.error("请选择数据!");
}
this.processEsInspectReportService.deleteByIds(Arrays.asList(map.get("ids").split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
@AutoLog(value = "企标稽查整改业务表-通过id查询")
@ApiOperation(value="企标稽查整改业务表-通过id查询", notes="企标稽查整改业务表-通过id查询")
@GetMapping(value = "/queryById")
public Result<ProcessEsInspectRectify> queryById(@RequestParam(name="id",required=true) String id) {
ProcessEsInspectRectify esInspectReport = processEsInspectReportService.queryById(id);
if(esInspectReport==null) {
return Result.error("未找到对应数据");
}
return Result.OK(esInspectReport);
}
/**
* 通过项目id查询
*
* @param projectId
* @return
*/
@AutoLog(value = "企标稽查整改业务表-通过项目id查询")
@ApiOperation(value="企标稽查整改业务表-通过项目id查询", notes="企标稽查整改业务表-通过项目id查询")
@GetMapping(value = "/queryByProjectId")
@Translation
public Result<ProcessEsInspectRectifyVO> queryByProjectId(String projectId) {
ProcessEsInspectRectifyVO esInspectReportVO = processEsInspectReportService.queryByProjectId(projectId);
if(esInspectReportVO==null) {
return Result.error("未找到对应数据");
}
return Result.OK(esInspectReportVO);
}
/**
* 导出excel
*
* @param request
* @param processEsInspectReport
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, ProcessEsInspectRectify processEsInspectReport) {
return super.exportXls(request, processEsInspectReport, ProcessEsInspectRectify.class, "企标稽查整改业务表");
}
}
@@ -1,65 +0,0 @@
package com.jero.modules.activiti.process.esinspectrectify.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import com.jero.modules.laws.documenttool.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @Description: 企标稽查整改业务表
* @Author: jero-boot
* @Date: 2023-11-28
* @Version: V1.0
*/
@Data
@TableName("process_es_inspect_rectify")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="process_es_inspect_rectify对象", description="企标稽查整改业务表")
public class ProcessEsInspectRectify extends BaseEntity {
/**项目id*/
@Excel(name = "项目id", width = 15)
@ApiModelProperty(value = "项目id")
private String projectId;
/**企标稽查整改计划id*/
@Excel(name = "企标稽查整改计划id", width = 15)
@ApiModelProperty(value = "企标稽查整改计划id")
private String inspectRectifyPlanId;
/**操作类型(1:提交整改结果 2:申请延期)*/
@Excel(name = "操作类型(1:提交整改结果 2:申请延期)", width = 15)
@ApiModelProperty(value = "操作类型(1:提交整改结果 2:申请延期)")
@Dict(dicCode = "report_operation_type")
private String operationType;
/**整改结果*/
@Excel(name = "整改结果", width = 15)
@ApiModelProperty(value = "整改结果")
private String rectifyResult;
/**附件*/
@Excel(name = "附件", width = 15)
@ApiModelProperty(value = "附件")
private String attachment;
/**申请延期日期*/
@Excel(name = "申请延期日期", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "申请延期日期")
private Date applyDelayDate;
/**延期说明*/
@Excel(name = "延期说明", width = 15)
@ApiModelProperty(value = "延期说明")
private String delayDetail;
/**是否生成过新的流程(1:是 0:否)*/
@Excel(name = "是否生成过新的流程(1:是 0:否)", width = 15)
@ApiModelProperty(value = "是否生成过新的流程(1:是 0:否)")
private String isDelayCreate;
}
@@ -1,129 +0,0 @@
package com.jero.modules.activiti.process.esinspectrectify.job;
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.util.SnowflakeUtils;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.process.esinspectrectify.common.EsInspectRectifyCommon;
import com.jero.modules.activiti.process.esinspectrectify.entity.ProcessEsInspectRectify;
import com.jero.modules.activiti.process.esinspectrectify.service.IEsInspectRectifyFlowService;
import com.jero.modules.activiti.process.esinspectrectify.service.IProcessEsInspectRectifyService;
import com.jero.modules.activiti.process.esinspectrectify.vo.EsInspectRectifyFlowVO;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectRectifyPlan;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectRectifyPlanService;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @ClassName: DelayApplyJob
* @Description: 企标稽查整改-申请延期生成稽查整改定时任务
* @Author: yjz
* @Date: 2023-12-26 09:59
* @Version: 1.0
**/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
public class DelayApplyJob implements Job {
@Resource
private IEsInspectRectifyFlowService esInspectRectifyFlowService;
@Resource
private IProcessEsInspectRectifyService processEsInspectRectifyService;
@Resource
private ProcessAllService processAllService;
@Resource
private EnterpriseStandardInspectRectifyPlanService enterpriseStandardInspectRectifyPlanService;
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JeroBootException {
log.info("企标稽查整改-申请延期生成稽查整改定时任务开始");
long num = 0L;
// 需要生成的企标稽查整改
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date parse;
try {
parse = dateFormat.parse(dateFormat.format(date));
} catch (ParseException e) {
throw new JeroBootException(e);
}
List<ProcessEsInspectRectify> list = processEsInspectRectifyService.list(
new LambdaQueryWrapper<ProcessEsInspectRectify>()
.eq(ProcessEsInspectRectify::getIsDelayCreate, YesOrNoEnum.NO.getValue())
.eq(ProcessEsInspectRectify::getApplyDelayDate, parse));
List<String> idList = new ArrayList<>();
// 生成新整改流程
for (ProcessEsInspectRectify processEsInspectRectify : list) {
idList.add(processEsInspectRectify.getId());
EsInspectRectifyFlowVO esInspectReportFlowVO = new EsInspectRectifyFlowVO();
// 更新整改计划完成日期为申请延期日期,整改实际完成时间置空,整改状态为整改中
enterpriseStandardInspectRectifyPlanService.update(
new LambdaUpdateWrapper<EnterpriseStandardInspectRectifyPlan>()
.eq(EnterpriseStandardInspectRectifyPlan::getId, processEsInspectRectify.getInspectRectifyPlanId())
.set(EnterpriseStandardInspectRectifyPlan::getPlanCompleteDate, processEsInspectRectify.getApplyDelayDate())
.set(EnterpriseStandardInspectRectifyPlan::getActualCompleteDate, null)
.set(EnterpriseStandardInspectRectifyPlan::getRectifyStatus, EsInspectRectifyCommon.INSPECT_RECTIFY_STATUS_1));
// 整改计划
EnterpriseStandardInspectRectifyPlan enterpriseStandardInspectRectifyPlan =
enterpriseStandardInspectRectifyPlanService.getById(processEsInspectRectify.getInspectRectifyPlanId());
// 处理流程信息
ProcessAll oldProcessAll = processAllService.getOne(
new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, processEsInspectRectify.getProjectId()));
ProcessAll processAll = new ProcessAll();
processAll.setProjectId(String.valueOf(SnowflakeUtils.snowflake()));
processAll.setPrcName(oldProcessAll.getPrcName());
processAll.setCreateUserId(enterpriseStandardInspectRectifyPlan.getResponseUser());
esInspectReportFlowVO.setProcessAll(processAll);
// 处理流程审批信息
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
processApprovalRecord.setProjectId(processAll.getProjectId());
processApprovalRecord.setUserId(enterpriseStandardInspectRectifyPlan.getResponseUser());
esInspectReportFlowVO.setProcessApprovalRecord(processApprovalRecord);
// 处理业务表数据
ProcessEsInspectRectify newProcessEsInspectRectify = new ProcessEsInspectRectify();
newProcessEsInspectRectify.setId(String.valueOf(SnowflakeUtils.snowflake()));
newProcessEsInspectRectify.setProjectId(processAll.getProjectId());
newProcessEsInspectRectify.setIsDelayCreate(YesOrNoEnum.NO.getValue());
newProcessEsInspectRectify.setInspectRectifyPlanId(processEsInspectRectify.getInspectRectifyPlanId());
esInspectReportFlowVO.setProcessEsInspectRectify(newProcessEsInspectRectify);
processEsInspectRectifyService.save(newProcessEsInspectRectify);
// 处理人员信息
Map<String, Object> map = new HashMap<>();
map.put("responsible", enterpriseStandardInspectRectifyPlan.getResponseUser());
map.put("leader", "请选择");
map.put("responsibleApproval", "请选择");
esInspectReportFlowVO.setMap(map);
esInspectRectifyFlowService.createReportFlow(esInspectReportFlowVO);
num += 1;
}
if (!idList.isEmpty()){
// 修改状态
processEsInspectRectifyService.update(
new LambdaUpdateWrapper<ProcessEsInspectRectify>()
.in(ProcessEsInspectRectify::getId, idList)
.set(ProcessEsInspectRectify::getIsDelayCreate, YesOrNoEnum.YES.getValue()));
}
log.info("企标稽查整改-申请延期生成稽查整改定时任务结束");
log.info("企标稽查整改-申请延期生成稽查整改{}条", num);
}
}
@@ -1,14 +0,0 @@
package com.jero.modules.activiti.process.esinspectrectify.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.modules.activiti.process.esinspectrectify.entity.ProcessEsInspectRectify;
/**
* @Description: 企标稽查整改业务表
* @Author: jero-boot
* @Date: 2023-11-28
* @Version: V1.0
*/
public interface ProcessEsInspectRectifyMapper extends BaseMapper<ProcessEsInspectRectify> {
}
@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.activiti.process.esinspectrectify.mapper.ProcessEsInspectRectifyMapper">
</mapper>
@@ -1,54 +0,0 @@
package com.jero.modules.activiti.process.esinspectrectify.service;
import com.jero.modules.activiti.process.esinspectrectify.vo.EsInspectRectifyFlowVO;
import java.text.ParseException;
/**
* @ClassName: IEsInspectReportFlowService
* @Description:
* @Author: yjz
* @Date: 2023-11-28 19:50
* @Version: 1.0
**/
public interface IEsInspectRectifyFlowService {
/**
* 企标稽查流程-流程发起
* @param esInspectReportFlowVO
*/
void flowStart(EsInspectRectifyFlowVO esInspectReportFlowVO);
/**
* 生成企标稽查整改
* @param esInspectReportFlowVO
*/
void createReportFlow(EsInspectRectifyFlowVO esInspectReportFlowVO);
/**
* 企标稽查流程-流程保存
* @param esInspectReportFlowVO
*/
void flowSave(EsInspectRectifyFlowVO esInspectReportFlowVO);
/**
* 企标稽查流程-办理详情
* @param projectId
* @param taskId
* @return
*/
EsInspectRectifyFlowVO queryDetailByProjectId(String projectId, String taskId);
/**
* 企标稽查流程-流程审批
* @param esInspectReportFlowVO
*/
void flowApproval(EsInspectRectifyFlowVO esInspectReportFlowVO) throws ParseException;
/**
* 企标稽查流程-流程转办
* @param taskId
* @param userId
*/
void flowTransfer(String taskId, String userId);
}
@@ -1,86 +0,0 @@
package com.jero.modules.activiti.process.esinspectrectify.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.activiti.process.esinspectrectify.entity.ProcessEsInspectRectify;
import com.jero.modules.activiti.process.esinspectrectify.vo.ProcessEsInspectRectifyVO;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* @Description: 企标稽查整改业务表
* @Author: jero-boot
* @Date: 2023-11-28
* @Version: V1.0
*/
public interface IProcessEsInspectRectifyService extends IService<ProcessEsInspectRectify> {
/**
* 分页查询
*
* @param processEsInspectReport
* @param pageNo
* @param pageSize
* @param req
* @return
*/
IPage<ProcessEsInspectRectify> queryPage(ProcessEsInspectRectify processEsInspectReport, Integer pageNo, Integer pageSize, HttpServletRequest req);
/**
* 列表查询
*
* @param processEsInspectReport
* @param req
* @return
*/
List<ProcessEsInspectRectify> queryList(ProcessEsInspectRectify processEsInspectReport, HttpServletRequest req);
/**
* 保存
*
* @param processEsInspectReport
* @return
*/
void add(ProcessEsInspectRectify processEsInspectReport);
/**
* 更新
*
* @param processEsInspectReport
* @return
*/
void editById(ProcessEsInspectRectify processEsInspectReport);
/**
* 通过id删除
*
* @param id
* @return
*/
void deleteById(String id);
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
ProcessEsInspectRectify queryById(String id);
/**
* 企标稽查整改业务表-通过项目id查询
*
* @param projectId
* @return
*/
ProcessEsInspectRectifyVO queryByProjectId(String projectId);
}
@@ -1,39 +0,0 @@
package com.jero.modules.activiti.process.esinspectrectify.service.impl;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.WorkCenterService;
import com.jero.modules.activiti.util.SpringContextUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @ClassName: EsInspectPlanFlowService
* @Description:
* @Author: yjz
* @Date: 2024-01-11 21:19
* @Version: 1.0
**/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
@Service
public class EsInspectRectifyFlow implements WorkCenterService {
/**
* 强制撤回
* @param processAll 流程总表
*/
@Override
public void changeToDraft(ProcessAll processAll) {
// 删除业务表数据
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
processAllService.physicalDeleteByProjectId("process_es_inspect_rectify", processAll.getProjectId());
}
@Override
public void handleTransfer(ProcessAll processAll, ProcessApprovalRecord processApprovalRecord, String toUserId, String userId) {
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
processAllService.specialTransfer(processAll, processApprovalRecord, toUserId, userId);
}
}
@@ -1,477 +0,0 @@
package com.jero.modules.activiti.process.esinspectrectify.service.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.entity.ProcessNodeLink;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessStatusEnum;
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.esinspectrectify.common.EsInspectRectifyCommon;
import com.jero.modules.activiti.process.esinspectrectify.entity.ProcessEsInspectRectify;
import com.jero.modules.activiti.process.esinspectrectify.service.IEsInspectRectifyFlowService;
import com.jero.modules.activiti.process.esinspectrectify.service.IProcessEsInspectRectifyService;
import com.jero.modules.activiti.process.esinspectrectify.vo.EsInspectRectifyFlowVO;
import com.jero.modules.activiti.process.esinspectrectify.vo.ProcessEsInspectRectifyVO;
import com.jero.modules.activiti.process.esinspectrectify.vo.UserInfo;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectRectifyPlan;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectRectifyPlanService;
import com.jero.modules.system.service.ISysUserService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* @ClassName: EsInspectReportFlowServiceImpl
* @Description:
* @Author: yjz
* @Date: 2023-11-28 19:51
* @Version: 1.0
**/
@Service
@Transactional(rollbackFor = JeroBootException.class)
public class EsInspectRectifyFlowServiceImpl implements IEsInspectRectifyFlowService {
private final ProcessAllService processAllService;
private final ProcessApprovalRecordService processApprovalRecordService;
private final ProcessDraftService processDraftService;
private final ProcessNodeLinkService processNodeLinkService;
private final IProcessEsInspectRectifyService processEsInspectRectifyService;
private final EnterpriseStandardInspectRectifyPlanService enterpriseStandardInspectRectifyPlanService;
private final ISysUserService sysUserService;
public EsInspectRectifyFlowServiceImpl(ProcessAllService processAllService,
ProcessApprovalRecordService processApprovalRecordService,
ProcessDraftService processDraftService,
ProcessNodeLinkService processNodeLinkService,
IProcessEsInspectRectifyService processEsInspectReportService,
EnterpriseStandardInspectRectifyPlanService enterpriseStandardInspectRectifyPlanService,
ISysUserService sysUserService) {
this.processAllService = processAllService;
this.processApprovalRecordService = processApprovalRecordService;
this.processDraftService = processDraftService;
this.processNodeLinkService = processNodeLinkService;
this.processEsInspectRectifyService = processEsInspectReportService;
this.enterpriseStandardInspectRectifyPlanService = enterpriseStandardInspectRectifyPlanService;
this.sysUserService = sysUserService;
}
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
@Resource
private TaskService taskService;
@Resource
private IProcessHandleService processHandleService;
private static final String RESPONSIBLE = "responsible";
@Override
public void flowStart(EsInspectRectifyFlowVO esInspectReportFlowVO) {
// 流程信息
ProcessAll processAll = esInspectReportFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectReportFlowVO.getProcessApprovalRecord();
// map(参数)
Map<String, Object> map = esInspectReportFlowVO.getMap();
// 根据流程key启动流程 同时 设置审批人员参数
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey(EsInspectRectifyCommon.KEY, map);
// 再次设置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()));
// 根据流程实例id查询
Task task = taskService.createTaskQuery()
.processInstanceId(processInstance.getId())
.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()));
// 处理业务表数据
handleBusinessData(esInspectReportFlowVO);
// 新增流程实例节点关联用户表
processNodeLinkService.saveNodeUserLink(processInstance.getProcessDefinitionId(), processInstance.getId(), listToString(map));
// 自动完成第一个节点
taskService.complete(task.getId());
}
@Override
public void createReportFlow(EsInspectRectifyFlowVO esInspectReportFlowVO) {
// 流程信息
ProcessAll processAll = esInspectReportFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectReportFlowVO.getProcessApprovalRecord();
// map(参数)
Map<String, Object> map = esInspectReportFlowVO.getMap();
// 根据流程key启动流程 同时 设置审批人员参数
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey(EsInspectRectifyCommon.KEY, map);
// 再次设置map
runtimeService.setVariables(processInstance.getId(), map);
// 更新流程总表信息
processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT_REPORT.getValue()));
processAll.setPrcStatus(ProcessStatusEnum.INCOMPLETE.getValue());
DateTime date = DateUtil.date();
processAll.setPrcNum(DateUtil.format(date, DatePattern.PURE_DATETIME_MS_PATTERN));
processAllService.update(processAll,
new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getProcessInstanceId, processInstance.getId()));
// 根据流程实例id查询
Task task = taskService.createTaskQuery()
.processInstanceId(processInstance.getId())
.singleResult();
// 更新流程审批信息
processApprovalRecord.setUserId((String) map.get(RESPONSIBLE));
processApprovalRecord.setProjectId(processAll.getProjectId());
processApprovalRecord.setFinishFlag(FinishFlagEnum.INCOMPLETE.getValue());
processApprovalRecordService.update(processApprovalRecord,
new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getTaskId, task.getId()));
// 新增流程实例节点关联用户表
processNodeLinkService.saveNodeUserLink(processInstance.getProcessDefinitionId(), processInstance.getId(), listToString(map));
// 保存新草稿(强制撤回用)
saveDraft(esInspectReportFlowVO, processAll, processApprovalRecord);
}
private void saveDraft(EsInspectRectifyFlowVO esInspectReportFlowVO, ProcessAll processAll, ProcessApprovalRecord processApprovalRecord) {
ProcessDraft processDraft = new ProcessDraft();
// 属性拷贝
BeanUtils.copyProperties(processAll, processDraft);
processDraft.setCreateBy("");
processDraft.setId("");
processDraft.setUpdateBy("");
Date dateNow = new Date();
processDraft.setCreateTime(dateNow);
processDraft.setUpdateBy("");
processDraft.setUpdateTime(dateNow);
// 保存草稿表
if (StringUtils.isNotBlank(processApprovalRecord.getCommitFile())){
processDraft.setHandleFile(processApprovalRecord.getCommitFile());
}
if (StringUtils.isNotBlank(processApprovalRecord.getCommitText())){
processDraft.setHandleText(processApprovalRecord.getCommitText());
}
if (!Objects.isNull(processAll.getDueTime())){
processDraft.setProcessDueDate(processAll.getDueTime());
}
if (StringUtils.isNotBlank(processAll.getPrcMes())){
processDraft.setProcessDescription(processAll.getPrcMes());
}
if (StringUtils.isNotBlank(esInspectReportFlowVO.getInfoJsonStr())){
processDraft.setInfoJsonStr(esInspectReportFlowVO.getInfoJsonStr());
}
processDraft.setUserId(processApprovalRecord.getUserId());
processDraft.setId(String.valueOf(SnowflakeUtils.snowflake()));
processDraft.setSaveSource("3");
// 保存infoJsonStr信息
Map<String, Object> map = esInspectReportFlowVO.getMap();
map.put("responsible_dictText", sysUserService.dictByIdsOrUserNames(String.valueOf(map.get(RESPONSIBLE)), ""));
ProcessEsInspectRectify processEsInspectRectify = esInspectReportFlowVO.getProcessEsInspectRectify();
ProcessEsInspectRectifyVO processEsInspectRectifyVO = processEsInspectRectifyService.queryByProjectId(processEsInspectRectify.getProjectId());
JSONObject jsonObject = new JSONObject();
jsonObject.put("revocation", true);
jsonObject.put("personInfo", map);
jsonObject.put("draftData", processEsInspectRectifyVO);
processDraft.setInfoJsonStr(jsonObject.toJSONString());
processDraftService.save(processDraft);
}
private void handleBusinessData(EsInspectRectifyFlowVO esInspectReportFlowVO) {
ProcessEsInspectRectify processEsInspectRectify = esInspectReportFlowVO.getProcessEsInspectRectify();
processEsInspectRectifyService.saveOrUpdate(processEsInspectRectify);
}
@Override
public void flowSave(EsInspectRectifyFlowVO esInspectReportFlowVO) {
// 处理业务表数据
handleBusinessData(esInspectReportFlowVO);
// 流程信息
ProcessAll processAll = esInspectReportFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectReportFlowVO.getProcessApprovalRecord();
// 更新流程信息
processAllService.update(new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getId, processAll.getId())
.set(ProcessAll::getPrcName, processAll.getPrcName())
.set(ProcessAll::getPrcMes, processAll.getPrcMes())
.set(ProcessAll::getDueTime, processAll.getDueTime()));
// 更新流程审批信息
processApprovalRecordService.update(new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getTaskId, processAll.getTaskId())
.set(ProcessApprovalRecord::getCommitText, processApprovalRecord.getCommitText())
.set(ProcessApprovalRecord::getCommitFile, processApprovalRecord.getCommitFile()));
}
@Override
public EsInspectRectifyFlowVO queryDetailByProjectId(String projectId, String taskId) {
EsInspectRectifyFlowVO esInspectReportFlowVO = new EsInspectRectifyFlowVO();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId)
.orderByDesc(ProcessAll::getCreateTime), false);
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
// 是否存在草稿
List<ProcessDraft> processDraftList = processDraftService.list(new LambdaQueryWrapper<ProcessDraft>()
.eq(ProcessDraft::getProjectId, projectId)
.eq(ProcessDraft::getUserId, loginUser.getId())
.and(qw -> qw.ne(ProcessDraft::getSaveSource, "3")
.or().isNull(ProcessDraft::getSaveSource)));
if (!processDraftList.isEmpty()){
String id = "";
if(Objects.isNull(processAll)){
processAll = new ProcessAll();
id = String.valueOf(SnowflakeUtils.snowflake());
}else {
id = processAll.getId();
}
// 存在草稿
ProcessDraft processDraft = processDraftList.get(0);
// 属性拷贝
BeanUtils.copyProperties(processDraft, processAll);
processAll.setId(id);
if (StringUtils.isNotBlank(processDraft.getHandleFile())){
processApprovalRecord.setCommitFile(processDraft.getHandleFile());
}
if (StringUtils.isNotBlank(processDraft.getHandleText())){
processApprovalRecord.setCommitText(processDraft.getHandleText());
}
if (!Objects.isNull(processDraft.getProcessDueDate())){
processAll.setDueTime(processDraft.getProcessDueDate());
}
if (StringUtils.isNotBlank(processDraft.getProcessDescription())){
processAll.setPrcMes(processDraft.getProcessDescription());
}
if (StringUtils.isNotBlank(processDraft.getInfoJsonStr())){
esInspectReportFlowVO.setInfoJsonStr(processDraft.getInfoJsonStr());
}
}else {
// 不存在草稿
processApprovalRecord = processApprovalRecordService.getOne(new LambdaQueryWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getUserId, loginUser.getId())
.eq(ProcessApprovalRecord::getTaskId, taskId)
, false);
}
esInspectReportFlowVO.setProcessAll(processAll);
esInspectReportFlowVO.setProcessApprovalRecord(processApprovalRecord);
return esInspectReportFlowVO;
}
@Override
public void flowApproval(EsInspectRectifyFlowVO esInspectReportFlowVO) throws ParseException {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// 流程信息
ProcessAll processAll = esInspectReportFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectReportFlowVO.getProcessApprovalRecord();
// map(参数)
Map<String, Object> map = esInspectReportFlowVO.getMap();
// 更新流程总表信息
processAllService.updateById(processAll);
//更新人员信息
List<UserInfo> userInfoList = esInspectReportFlowVO.getUserInfo();
for (UserInfo userInfo : userInfoList) {
processNodeLinkService.update(new LambdaUpdateWrapper<ProcessNodeLink>()
.eq(ProcessNodeLink::getProcessNodeId, userInfo.getId())
.eq(ProcessNodeLink::getProcessInstanceId, processAll.getProcessInstanceId())
.set(ProcessNodeLink::getUserId, userInfo.getLinkUserIds()));
}
// 处理业务表数据
handleBusinessData(esInspectReportFlowVO);
// 更新流程审批信息
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()));
Task task = taskService.createTaskQuery().taskId(processAll.getTaskId()).singleResult();
if (task!= null) {
// 如果是第一节点,说明是强制撤回后的,需要更新报错第一个节点人填写的业务信息
updateInfoJsonStr(esInspectReportFlowVO);
// 完成任务
taskService.complete(task.getId(), map);
// 再次更新流程审批信息
processApprovalRecordService.update(new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getUserId, loginUser.getId())
.eq(ProcessApprovalRecord::getTaskId, processAll.getTaskId())
.set(ProcessApprovalRecord::getCommitFlag, processApprovalRecord.getCommitFlag()));
// 判断是否是最后一个节点
if (isLastNode(processAll.getProcessInstanceId())){
ProcessEsInspectRectifyVO processEsInspectReportVO = processEsInspectRectifyService.queryByProjectId(processAll.getProjectId());
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date parse = dateFormat.parse(dateFormat.format(date));
// 是否申请延期
if (EsInspectRectifyCommon.OPERATION_TYPE_2.equals(processEsInspectReportVO.getOperationType())){
// 更新整改计划完成日期为申请延期日期,整改实际完成时间置空,整改状态为整改中
enterpriseStandardInspectRectifyPlanService.update(
new LambdaUpdateWrapper<EnterpriseStandardInspectRectifyPlan>()
.eq(EnterpriseStandardInspectRectifyPlan::getId, processEsInspectReportVO.getInspectRectifyPlanId())
.set(EnterpriseStandardInspectRectifyPlan::getPlanCompleteDate, processEsInspectReportVO.getApplyDelayDate())
.set(EnterpriseStandardInspectRectifyPlan::getActualCompleteDate, null)
.set(EnterpriseStandardInspectRectifyPlan::getRectifyStatus, EsInspectRectifyCommon.INSPECT_RECTIFY_STATUS_1));
// 申请延期日期 <= 当前日期 立即生成新流程
if (processEsInspectReportVO.getApplyDelayDate().before(parse)
|| processEsInspectReportVO.getApplyDelayDate().equals(parse)){
// 整改计划
EnterpriseStandardInspectRectifyPlan enterpriseStandardInspectRectifyPlan =
enterpriseStandardInspectRectifyPlanService.getById(processEsInspectReportVO.getInspectRectifyPlanId());
// 生成新整改流程
EsInspectRectifyFlowVO newEsInspectReportFlowVO = new EsInspectRectifyFlowVO();
// 处理流程信息
ProcessAll newProcessAll = new ProcessAll();
newProcessAll.setProjectId(String.valueOf(SnowflakeUtils.snowflake()));
newProcessAll.setPrcName(processAll.getPrcName());
newProcessAll.setCreateUserId(enterpriseStandardInspectRectifyPlan.getResponseUser());
newEsInspectReportFlowVO.setProcessAll(newProcessAll);
// 处理流程审批信息
ProcessApprovalRecord newProcessApprovalRecord = new ProcessApprovalRecord();
newProcessApprovalRecord.setId(String.valueOf(SnowflakeUtils.snowflake()));
newProcessApprovalRecord.setProjectId(newProcessAll.getProjectId());
newProcessApprovalRecord.setUserId(enterpriseStandardInspectRectifyPlan.getResponseUser());
newEsInspectReportFlowVO.setProcessApprovalRecord(newProcessApprovalRecord);
// 处理业务表数据
ProcessEsInspectRectify processEsInspectRectify = new ProcessEsInspectRectify();
processEsInspectRectify.setId(String.valueOf(SnowflakeUtils.snowflake()));
processEsInspectRectify.setProjectId(newProcessAll.getProjectId());
processEsInspectRectify.setIsDelayCreate(YesOrNoEnum.NO.getValue());
processEsInspectRectify.setInspectRectifyPlanId(processEsInspectReportVO.getInspectRectifyPlanId());
newEsInspectReportFlowVO.setProcessEsInspectRectify(processEsInspectRectify);
processEsInspectRectifyService.save(processEsInspectRectify);
// 处理人员信息
Map<String, Object> newMap = new HashMap<>();
newMap.put(RESPONSIBLE, enterpriseStandardInspectRectifyPlan.getResponseUser());
newMap.put("leader", "请选择");
newMap.put("responsibleApproval", "请选择");
newEsInspectReportFlowVO.setMap(newMap);
createReportFlow(newEsInspectReportFlowVO);
// 修改状态
processEsInspectRectifyService.update(
new LambdaUpdateWrapper<ProcessEsInspectRectify>()
.in(ProcessEsInspectRectify::getId, processEsInspectReportVO.getId())
.set(ProcessEsInspectRectify::getIsDelayCreate, YesOrNoEnum.YES.getValue()));
}
}else {
// 更新整改状态
enterpriseStandardInspectRectifyPlanService.update(new LambdaUpdateWrapper<EnterpriseStandardInspectRectifyPlan>()
.eq(EnterpriseStandardInspectRectifyPlan::getId, processEsInspectReportVO.getInspectRectifyPlanId())
.set(EnterpriseStandardInspectRectifyPlan::getRectifyStatus, EsInspectRectifyCommon.INSPECT_RECTIFY_STATUS_3)
.set(EnterpriseStandardInspectRectifyPlan::getActualCompleteDate, parse));
}
}
}
}
private void updateInfoJsonStr(EsInspectRectifyFlowVO esInspectReportFlowVO) {
ProcessApprovalRecord processApprovalRecord = esInspectReportFlowVO.getProcessApprovalRecord();
if (StringUtils.isNotBlank(processApprovalRecord.getNodeId())
&& EsInspectRectifyCommon.PROCESS_NODE_1.equals(processApprovalRecord.getNodeId())){
processDraftService.update(
new LambdaUpdateWrapper<ProcessDraft>()
.eq(ProcessDraft::getProjectId, esInspectReportFlowVO.getProcessAll().getProjectId())
.eq(ProcessDraft::getSaveSource, "3")
.set(ProcessDraft::getInfoJsonStr, esInspectReportFlowVO.getInfoJsonStr()
.replaceFirst("\\{", "{\"revocation\": true,")));
}
}
@Override
public void flowTransfer(String taskId, String userId) {
processHandleService.transfer(taskId, userId);
}
private Map<String, Object> listToString(Map<String, Object> map) {
Map<String, Object> stringObjectHashMap;
stringObjectHashMap = map.entrySet().stream().map(v -> {
if (v.getValue() instanceof List) {
List<String> list = (List<String>)v.getValue();
v.setValue(String.join(",", list));
}
return v;
}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
return stringObjectHashMap;
}
public boolean isLastNode(String processInstanceId) {
// 查询流程实例状态
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
// 如果流程实例为null,表示流程已结束
return processInstance == null;
}
}
@@ -1,155 +0,0 @@
package com.jero.modules.activiti.process.esinspectrectify.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.activiti.process.esinspect.service.IProcessEsInspectService;
import com.jero.modules.activiti.process.esinspect.vo.ProcessEsInspectVO;
import com.jero.modules.activiti.process.esinspectrectify.entity.ProcessEsInspectRectify;
import com.jero.modules.activiti.process.esinspectrectify.mapper.ProcessEsInspectRectifyMapper;
import com.jero.modules.activiti.process.esinspectrectify.service.IProcessEsInspectRectifyService;
import com.jero.modules.activiti.process.esinspectrectify.vo.ProcessEsInspectRectifyVO;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectRectifyPlan;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectRectifyPlanService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
/**
* @Description: 企标稽查整改业务表
* @Author: jero-boot
* @Date: 2023-11-28
* @Version: V1.0
*/
@Service
@Transactional(rollbackFor = JeroBootException.class)
public class ProcessEsInspectRectifyServiceImpl extends ServiceImpl<ProcessEsInspectRectifyMapper, ProcessEsInspectRectify> implements IProcessEsInspectRectifyService {
private final EnterpriseStandardInspectRectifyPlanService enterpriseStandardInspectRectifyPlanService;
private final IProcessEsInspectService processEsInspectService;
public ProcessEsInspectRectifyServiceImpl(EnterpriseStandardInspectRectifyPlanService enterpriseStandardInspectRectifyPlanService,
IProcessEsInspectService processEsInspectService) {
this.enterpriseStandardInspectRectifyPlanService = enterpriseStandardInspectRectifyPlanService;
this.processEsInspectService = processEsInspectService;
}
/**
* 分页查询
*
* @param processEsInspectReport
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@Override
public IPage<ProcessEsInspectRectify> queryPage(ProcessEsInspectRectify processEsInspectReport, Integer pageNo, Integer pageSize,
HttpServletRequest req) {
QueryWrapper<ProcessEsInspectRectify> queryWrapper = QueryGenerator.initQueryWrapper(processEsInspectReport, req.getParameterMap());
Page<ProcessEsInspectRectify> page = new Page<>(pageNo, pageSize);
return page(page, queryWrapper);
}
/**
* 列表查询
*
* @param processEsInspectReport
* @param req
* @return
*/
@Override
public List<ProcessEsInspectRectify> queryList(ProcessEsInspectRectify processEsInspectReport, HttpServletRequest req) {
return list(QueryGenerator.initQueryWrapper(processEsInspectReport, req.getParameterMap()));
}
/**
* 保存
*
* @param processEsInspectReport
* @return
*/
@Override
public void add(ProcessEsInspectRectify processEsInspectReport) {
Date now = new Date();
processEsInspectReport.setCreateTime(now);
processEsInspectReport.setUpdateTime(now);
save(processEsInspectReport);
}
/**
* 更新
*
* @param processEsInspectReport
* @return
*/
@Override
public void editById(ProcessEsInspectRectify processEsInspectReport) {
Date now = new Date();
processEsInspectReport.setUpdateTime(now);
saveOrUpdate(processEsInspectReport);
}
/**
* 通过id删除
*
* @param id
* @return
*/
@Override
public void deleteById(String id) {
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public ProcessEsInspectRectify queryById(String id) {
return getById(id);
}
@Override
public ProcessEsInspectRectifyVO queryByProjectId(String projectId) {
ProcessEsInspectRectifyVO esInspectReportVO = new ProcessEsInspectRectifyVO();
ProcessEsInspectRectify processEsInspectRectify = getOne(
new LambdaQueryWrapper<ProcessEsInspectRectify>()
.eq(ProcessEsInspectRectify::getProjectId, projectId));
BeanUtils.copyProperties(processEsInspectRectify, esInspectReportVO);
// 查询企业标准稽查整改计划
EnterpriseStandardInspectRectifyPlan enterpriseStandardInspectRectifyPlan = enterpriseStandardInspectRectifyPlanService.queryById(processEsInspectRectify.getInspectRectifyPlanId());
esInspectReportVO.setEnterpriseStandardInspectRectifyPlan(enterpriseStandardInspectRectifyPlan);
// 稽查依据
String processEsInspectId = enterpriseStandardInspectRectifyPlan.getProcessEsInspectId();
ProcessEsInspectVO processEsInspectVO = new ProcessEsInspectVO();
processEsInspectVO.setId(processEsInspectId);
List<ProcessEsInspectVO> processEsInspectVOList = processEsInspectService.queryByList(processEsInspectVO);
if (!processEsInspectVOList.isEmpty()){
esInspectReportVO.setStandardName(processEsInspectVOList.get(0).getInspectName());
}
return esInspectReportVO;
}
}
@@ -1,44 +0,0 @@
package com.jero.modules.activiti.process.esinspectrectify.vo;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.process.esinspectrectify.entity.ProcessEsInspectRectify;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* @ClassName: EsInspectReportFlowVO
* @Description:
* @Author: yjz
* @Date: 2023-11-28 19:55
* @Version: 1.0
**/
@Data
public class EsInspectRectifyFlowVO {
/**流程信息*/
@ApiModelProperty(value = "流程信息")
private ProcessAll processAll;
/**流程审批信息*/
@ApiModelProperty(value = "流程审批信息")
private ProcessApprovalRecord processApprovalRecord;
/**业务基本信息*/
@ApiModelProperty(value = "业务基本信息")
private ProcessEsInspectRectify processEsInspectRectify;
/**map*/
@ApiModelProperty(value = "map")
private Map<String, Object> map;
/**人员信息*/
@ApiModelProperty(value = "人员信息")
private List<UserInfo> userInfo;
/**草稿信息json字符串*/
@ApiModelProperty(value = "草稿信息json字符串")
private String infoJsonStr;
/**
* 保存来源
*/
@ApiModelProperty(value="保存来源(1:待办 2:草稿)")
private String saveSource;
}
@@ -1,23 +0,0 @@
package com.jero.modules.activiti.process.esinspectrectify.vo;
import com.jero.modules.activiti.process.esinspectrectify.entity.ProcessEsInspectRectify;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectRectifyPlan;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @ClassName: EsInspectReportVO
* @Description:
* @Author: yjz
* @Date: 2023-11-28 19:32
* @Version: 1.0
**/
@Data
public class ProcessEsInspectRectifyVO extends ProcessEsInspectRectify {
/**稽查依据*/
@ApiModelProperty(value = "稽查依据")
private String standardName;
/**企业标准稽查整改计划*/
@ApiModelProperty(value = "企业标准稽查整改计划")
private EnterpriseStandardInspectRectifyPlan enterpriseStandardInspectRectifyPlan;
}
@@ -1,16 +0,0 @@
package com.jero.modules.activiti.process.esinspectrectify.vo;
import lombok.Data;
/**
* @ClassName: UserInfo
* @Description:
* @Author: yjz
* @Date: 2023-11-30 15:41
* @Version: 1.0
**/
@Data
public class UserInfo {
private String id;
private String linkUserIds;
}
@@ -1,35 +0,0 @@
package com.jero.modules.activiti.process.espermissionapply.common;
/**
* @ClassName: ProcessEsPermissionApplyCommon
* @Description:
* @Author: yjz
* @Date: 2023-11-29 18:41
* @Version: 1.0
**/
public class ProcessEsPermissionApplyCommon {
private ProcessEsPermissionApplyCommon(){
}
/**
* 权限申请流程key
*/
public static final String KEY = "permission_apply_process";
/**
* 权限申请流程name
*/
public static final String NAME = "权限申请流程";
/**
* 权限申请流程节点: 1:发起人申请,2:发起人领导审批,3:标准化审批
*/
public static final String PROCESS_NODE_1 = "initiator_start";
/**
* 权限申请流程节点: 1:发起人申请,2:发起人领导审批,3:标准化审批
*/
public static final String PROCESS_NODE_2 = "leader_approval";
/**
* 权限申请流程节点: 1:发起人申请,2:发起人领导审批,3:标准化审批
*/
public static final String PROCESS_NODE_3 = "standard_approval";
}
@@ -1,126 +0,0 @@
package com.jero.modules.activiti.process.espermissionapply.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation;
import com.jero.common.util.MessageUtils;
import com.jero.common.util.SnowflakeUtils;
import com.jero.modules.activiti.process.espermissionapply.service.EsPermissionApplyFlowService;
import com.jero.modules.activiti.process.espermissionapply.vo.EsPermissionApplyFlowVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.*;
/**
* @ClassName: EsPermissionApplyFlowController
* @Description:
* @Author: yjz
* @Date: 2023-11-29 18:42
* @Version: 1.0
**/
@Api(tags="权限申请流程")
@RestController
@RequestMapping("/process/esPermissionApplyFlow")
@Slf4j
public class EsPermissionApplyFlowController {
private final EsPermissionApplyFlowService esPermissionApplyFlowService;
public EsPermissionApplyFlowController(@Lazy EsPermissionApplyFlowService esPermissionApplyFlowService) {
this.esPermissionApplyFlowService = esPermissionApplyFlowService;
}
/**
* 权限申请流程-生成项目id
* @return 项目id
*/
@AutoLog(value = "权限申请流程-生成项目id")
@ApiOperation(value="权限申请流程-生成项目id", notes="权限申请流程-生成项目id")
@GetMapping(value = "/getProjectId")
public String getProjectId() {
return String.valueOf(SnowflakeUtils.snowflake());
}
/**
* 权限申请流程-流程发起
* @param esPermissionApplyFlowVO 权限申请流程VO对象
* @return 结果对象
*/
@AutoLog(value = "权限申请流程-流程发起")
@ApiOperation(value="权限申请流程-流程发起", notes="权限申请流程-流程发起")
@PostMapping(value = "/flowStart")
public Result<T> flowStart(@RequestBody EsPermissionApplyFlowVO esPermissionApplyFlowVO) {
esPermissionApplyFlowService.flowStart(esPermissionApplyFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 权限申请流程-流程保存
* @param esPermissionApplyFlowVO 权限申请流程VO对象
* @return 结果对象
*/
@AutoLog(value = "权限申请流程-流程保存")
@ApiOperation(value="权限申请流程-流程保存", notes="权限申请流程-流程保存")
@PostMapping(value = "/flowSave")
public Result<T> flowSave(@RequestBody EsPermissionApplyFlowVO esPermissionApplyFlowVO) {
esPermissionApplyFlowService.flowSave(esPermissionApplyFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 权限申请流程-办理详情
* @param projectId 项目id
* @return 结果对象
*/
@AutoLog(value = "权限申请流程-办理详情")
@ApiOperation(value="权限申请流程-办理详情", notes="权限申请流程-办理详情")
@GetMapping(value = "/queryDetailByProjectId")
@Translation
public Result<EsPermissionApplyFlowVO> queryDetailByProjectId(@ApiParam("项目id") String projectId, @ApiParam("任务id") String taskId) {
return Result.OK(esPermissionApplyFlowService.queryDetailByProjectId(projectId, taskId));
}
/**
* 权限申请流程-流程审批
* @param esPermissionApplyFlowVO 权限申请流程VO对象
* @return 结果对象
*/
@AutoLog(value = "权限申请流程-流程审批")
@ApiOperation(value="权限申请流程-流程审批", notes="权限申请流程-流程审批")
@PostMapping(value = "/flowApproval")
public Result<T> flowApproval(@RequestBody EsPermissionApplyFlowVO esPermissionApplyFlowVO) {
esPermissionApplyFlowService.flowApproval(esPermissionApplyFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 权限申请流程-驳回
* @param esPermissionApplyFlowVO 权限申请流程VO对象
* @return 结果对象
*/
@AutoLog(value = "权限申请流程-驳回")
@ApiOperation(value="权限申请流程-驳回", notes="权限申请流程-驳回")
@PostMapping(value = "/flowReject")
public Result<T> flowReject(@RequestBody EsPermissionApplyFlowVO esPermissionApplyFlowVO) {
log.info("");
esPermissionApplyFlowService.flowApproval(esPermissionApplyFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 权限申请流程-流程转办
* @return 结果对象
*/
@AutoLog(value = "权限申请流程-流程转办")
@ApiOperation(value="权限申请流程-流程转办", notes="权限申请流程-流程转办")
@GetMapping(value = "/flowTransfer")
public Result<T> flowTransfer(@ApiParam("任务id") String taskId, @ApiParam("用户id") String userId) {
esPermissionApplyFlowService.flowTransfer(taskId, userId);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
}
@@ -1,220 +0,0 @@
package com.jero.modules.activiti.process.espermissionapply.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.system.base.controller.JeroController;
import com.jero.modules.activiti.process.espermissionapply.entity.ProcessEsPermissionApply;
import com.jero.modules.activiti.process.espermissionapply.service.IProcessEsPermissionApplyService;
import com.jero.modules.activiti.process.espermissionapply.vo.ProcessEsPermissionApplyVO;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthUserService;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* @Description: 权限申请流程业务表
* @Author: jero-boot
* @Date: 2023-11-29
* @Version: V1.0
*/
@Api(tags="权限申请流程业务表")
@RestController
@RequestMapping("/espermissionapply/processEsPermissionApply")
@Slf4j
public class ProcessEsPermissionApplyController extends JeroController<ProcessEsPermissionApply, IProcessEsPermissionApplyService> {
@Autowired
private IProcessEsPermissionApplyService processEsPermissionApplyService;
@Autowired
private EnterpriseStandardAuthUserService enterpriseStandardAuthUserService;
@Autowired
private ILawsEnterpriseStandardService lawsEnterpriseStandardService;
/**
* 分页列表查询
*
* @param processEsPermissionApply
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "权限申请流程业务表-分页列表查询")
@ApiOperation(value="权限申请流程业务表-分页列表查询", notes="权限申请流程业务表-分页列表查询")
@GetMapping(value = "/page")
public Result<IPage<ProcessEsPermissionApply>> queryPageList(ProcessEsPermissionApply processEsPermissionApply,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
IPage<ProcessEsPermissionApply> pageList = processEsPermissionApplyService.queryPage(processEsPermissionApply, pageNo, pageSize, req);
return Result.OK(pageList);
}
/**
* 企标分页列表查询
* @param manyStandardSelectionBoxVO
* @param pageNo
* @param pageSize
* @return
*/
@AutoLog(value = "权限申请流程业务表-企标分页列表查询")
@ApiOperation(value="权限申请流程业务表-企标分页列表查询", notes="权限申请流程业务表-企标分页列表查询")
@GetMapping(value = "/queryEnterpriseByPage")
public Result<IPage<ManyStandardSelectionBox>> queryEnterpriseByPage(ManyStandardSelectionBoxVO manyStandardSelectionBoxVO,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
IPage<ManyStandardSelectionBox> pageList = processEsPermissionApplyService.queryEnterpriseByPage(manyStandardSelectionBoxVO, pageNo, pageSize);
return Result.OK(pageList);
}
/**
* 列表查询
*
* @param processEsPermissionApply
* @param req
* @return
*/
@AutoLog(value = "权限申请流程业务表-列表查询")
@ApiOperation(value="权限申请流程业务表-列表查询", notes="权限申请流程业务表-列表查询")
@GetMapping(value = "/list")
public Result<List<ProcessEsPermissionApply>> queryList(ProcessEsPermissionApply processEsPermissionApply, HttpServletRequest req) {
List<ProcessEsPermissionApply> list = processEsPermissionApplyService.queryList(processEsPermissionApply, req);
return Result.OK(list);
}
/**
* 添加
*
* @param jsonObject
* @return
*/
@AutoLog(value = "权限申请流程业务表-权限校验")
@ApiOperation(value="权限申请流程业务表-权限校验", notes="权限申请流程业务表-权限校验")
@PostMapping(value = "/permissionCheck")
public Result<T> permissionCheck(@Validated @RequestBody JSONObject jsonObject) {
return processEsPermissionApplyService.permissionCheck(jsonObject);
}
/**
* 添加
*
* @param processEsPermissionApply
* @return
*/
@AutoLog(value = "权限申请流程业务表-添加")
@ApiOperation(value="权限申请流程业务表-添加", notes="权限申请流程业务表-添加")
@PostMapping(value = "/add")
public Result<T> add(@Validated @RequestBody ProcessEsPermissionApply processEsPermissionApply) {
processEsPermissionApplyService.add(processEsPermissionApply);
return Result.OK("操作成功!");
}
/**
* 编辑
*
* @param processEsPermissionApply
* @return
*/
@AutoLog(value = "权限申请流程业务表-编辑")
@ApiOperation(value="权限申请流程业务表-编辑", notes="权限申请流程业务表-编辑")
@PostMapping(value = "/edit")
public Result<T> edit(@Validated @RequestBody ProcessEsPermissionApply processEsPermissionApply) {
processEsPermissionApplyService.editById(processEsPermissionApply);
return Result.OK("操作成功!");
}
/**
* 通过id删除
*
* @param map
* @return
*/
@AutoLog(value = "权限申请流程业务表-通过id删除")
@ApiOperation(value="权限申请流程业务表-通过id删除", notes="权限申请流程业务表-通过id删除")
@PostMapping(value = "/delete")
public Result<T> delete(@RequestBody Map<String, String> map) {
if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){
return Result.error("请选择数据!");
}
processEsPermissionApplyService.deleteById(map.get("id"));
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param map
* @return
*/
@AutoLog(value = "权限申请流程业务表-批量删除")
@ApiOperation(value="权限申请流程业务表-批量删除", notes="权限申请流程业务表-批量删除")
@PostMapping(value = "/deleteBatch")
public Result<T> deleteBatch(@RequestBody Map<String, String> map) {
if(!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))){
return Result.error("请选择数据!");
}
this.processEsPermissionApplyService.deleteByIds(Arrays.asList(map.get("ids").split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
@AutoLog(value = "权限申请流程业务表-通过id查询")
@ApiOperation(value="权限申请流程业务表-通过id查询", notes="权限申请流程业务表-通过id查询")
@GetMapping(value = "/queryById")
public Result<ProcessEsPermissionApply> queryById(@RequestParam(name="id",required=true) String id) {
ProcessEsPermissionApply processEsPermissionApply = processEsPermissionApplyService.queryById(id);
if(processEsPermissionApply==null) {
return Result.error("未找到对应数据");
}
return Result.OK(processEsPermissionApply);
}
/**
* 通过项目id查询
*
* @param projectId
* @return
*/
@AutoLog(value = "权限申请流程业务表-通过项目id查询")
@ApiOperation(value="权限申请流程业务表-通过项目id查询", notes="权限申请流程业务表-通过项目id查询")
@GetMapping(value = "/queryByProjectId")
public Result<ProcessEsPermissionApplyVO> queryByProjectId(String projectId) {
ProcessEsPermissionApplyVO processEsPermissionApplyVO = processEsPermissionApplyService.queryByProjectId(projectId);
if(processEsPermissionApplyVO==null) {
return Result.error("未找到对应数据");
}
return Result.OK(processEsPermissionApplyVO);
}
/**
* 导出excel
*
* @param request
* @param processEsPermissionApply
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, ProcessEsPermissionApply processEsPermissionApply) {
return super.exportXls(request, processEsPermissionApply, ProcessEsPermissionApply.class, "权限申请流程业务表");
}
}
@@ -1,58 +0,0 @@
package com.jero.modules.activiti.process.espermissionapply.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import com.jero.modules.laws.documenttool.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @Description: 权限申请流程
* @Author: jero-boot
* @Date: 2023-11-29
* @Version: V1.0
*/
@Data
@TableName("process_es_permission_apply")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="process_es_permission_apply对象", description="权限申请流程")
public class ProcessEsPermissionApply extends BaseEntity {
/**项目id*/
@Excel(name = "项目id", width = 15)
@ApiModelProperty(value = "项目id")
private String projectId;
/**标准编号*/
@Excel(name = "标准编号", width = 15)
@ApiModelProperty(value = "标准编号")
private String standardNumbers;
/**授权到期日期*/
@Excel(name = "授权到期日期", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "授权到期日期")
private Date expirationDate;
/**申请说明*/
@Excel(name = "申请说明", width = 15)
@ApiModelProperty(value = "申请说明")
private String applyDetail;
/**用户id*/
@Excel(name = "用户id", width = 15)
@ApiModelProperty(value = "用户id")
@Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
private String userId;
/**用户 翻译*/
@ApiModelProperty(value = "用户 翻译")
@TableField(exist = false)
private String userDictText;
}
@@ -1,14 +0,0 @@
package com.jero.modules.activiti.process.espermissionapply.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.modules.activiti.process.espermissionapply.entity.ProcessEsPermissionApply;
/**
* @Description: 权限申请流程
* @Author: jero-boot
* @Date: 2023-11-29
* @Version: V1.0
*/
public interface ProcessEsPermissionApplyMapper extends BaseMapper<ProcessEsPermissionApply> {
}
@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.activiti.process.espermissionapply.mapper.ProcessEsPermissionApplyMapper">
</mapper>
@@ -1,45 +0,0 @@
package com.jero.modules.activiti.process.espermissionapply.service;
import com.jero.modules.activiti.process.espermissionapply.vo.EsPermissionApplyFlowVO;
/**
* @InterfaceName: EsPermissionApplyFlowService
* @Description:
* @Author: yjz
* @Date: 2023-11-29 18:42
* @Version: 1.0
**/
public interface EsPermissionApplyFlowService {
/**
* 权限申请流程-流程发起
* @param esPermissionApplyFlowVO
*/
void flowStart(EsPermissionApplyFlowVO esPermissionApplyFlowVO);
/**
* 权限申请流程-流程保存
* @param esPermissionApplyFlowVO
*/
void flowSave(EsPermissionApplyFlowVO esPermissionApplyFlowVO);
/**
* 权限申请流程-办理详情
* @param projectId
* @param taskId
* @return
*/
EsPermissionApplyFlowVO queryDetailByProjectId(String projectId, String taskId);
/**
* 权限申请流程-审批
* @param esPermissionApplyFlowVO
*/
void flowApproval(EsPermissionApplyFlowVO esPermissionApplyFlowVO);
/**
* 权限申请流程-流程转办
* @param taskId
* @param userId
*/
void flowTransfer(String taskId, String userId);
}
@@ -1,106 +0,0 @@
package com.jero.modules.activiti.process.espermissionapply.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.common.api.vo.Result;
import com.jero.modules.activiti.process.espermissionapply.entity.ProcessEsPermissionApply;
import com.jero.modules.activiti.process.espermissionapply.vo.ProcessEsPermissionApplyVO;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
import org.apache.poi.ss.formula.functions.T;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* @Description: 权限申请流程
* @Author: jero-boot
* @Date: 2023-11-29
* @Version: V1.0
*/
public interface IProcessEsPermissionApplyService extends IService<ProcessEsPermissionApply> {
/**
* 分页查询
*
* @param processEsPermissionApply
* @param pageNo
* @param pageSize
* @param req
* @return
*/
IPage<ProcessEsPermissionApply> queryPage(ProcessEsPermissionApply processEsPermissionApply, Integer pageNo, Integer pageSize, HttpServletRequest req);
/**
* 列表查询
*
* @param processEsPermissionApply
* @param req
* @return
*/
List<ProcessEsPermissionApply> queryList(ProcessEsPermissionApply processEsPermissionApply, HttpServletRequest req);
/**
* 保存
*
* @param processEsPermissionApply
* @return
*/
void add(ProcessEsPermissionApply processEsPermissionApply);
/**
* 更新
*
* @param processEsPermissionApply
* @return
*/
void editById(ProcessEsPermissionApply processEsPermissionApply);
/**
* 通过id删除
*
* @param id
* @return
*/
void deleteById(String id);
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
ProcessEsPermissionApply queryById(String id);
/**
* 权限申请流程业务表-通过项目id查询
* @param projectId
* @return
*/
ProcessEsPermissionApplyVO queryByProjectId(String projectId);
/**
* 权限申请流程业务表-企标分页列表查询
* @param manyStandardSelectionBoxVO
* @param pageNo
* @param pageSize
* @return
*/
IPage<ManyStandardSelectionBox> queryEnterpriseByPage(ManyStandardSelectionBoxVO manyStandardSelectionBoxVO, Integer pageNo, Integer pageSize);
/**
* 权限申请流程业务表-权限校验
* @param jsonObject
* @return
*/
Result<T> permissionCheck(JSONObject jsonObject);
}
@@ -1,39 +0,0 @@
package com.jero.modules.activiti.process.espermissionapply.service.impl;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.WorkCenterService;
import com.jero.modules.activiti.util.SpringContextUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @ClassName: EsInspectPlanFlowService
* @Description:
* @Author: yjz
* @Date: 2024-01-11 21:19
* @Version: 1.0
**/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
@Service
public class EsPermissionApplyFlow implements WorkCenterService {
/**
* 强制撤回
* @param processAll 流程总表
*/
@Override
public void changeToDraft(ProcessAll processAll) {
// 删除业务表数据
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
processAllService.physicalDeleteByProjectId("process_es_permission_apply", processAll.getProjectId());
}
@Override
public void handleTransfer(ProcessAll processAll, ProcessApprovalRecord processApprovalRecord, String toUserId, String userId) {
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
processAllService.specialTransfer(processAll, processApprovalRecord, toUserId, userId);
}
}
@@ -1,306 +0,0 @@
package com.jero.modules.activiti.process.espermissionapply.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.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.SnowflakeUtils;
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.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.espermissionapply.common.ProcessEsPermissionApplyCommon;
import com.jero.modules.activiti.process.espermissionapply.entity.ProcessEsPermissionApply;
import com.jero.modules.activiti.process.espermissionapply.service.EsPermissionApplyFlowService;
import com.jero.modules.activiti.process.espermissionapply.service.IProcessEsPermissionApplyService;
import com.jero.modules.activiti.process.espermissionapply.vo.EsPermissionApplyFlowVO;
import com.jero.modules.activiti.process.espermissionapply.vo.ProcessEsPermissionApplyVO;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthUserService;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.entity.LawsStandardTempPermission;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @ClassName: EsPermissionApplyFlowServiceImpl
* @Description:
* @Author: yjz
* @Date: 2023-11-29 18:42
* @Version: 1.0
**/
@Service
@Transactional(rollbackFor = JeroBootException.class)
public class EsPermissionApplyFlowServiceImpl implements EsPermissionApplyFlowService {
private final ProcessAllService processAllService;
private final ProcessApprovalRecordService processApprovalRecordService;
private final ProcessDraftService processDraftService;
private final ProcessNodeLinkService processNodeLinkService;
private final IProcessEsPermissionApplyService processEsPermissionApplyService;
public EsPermissionApplyFlowServiceImpl(ProcessAllService processAllService,
ProcessApprovalRecordService processApprovalRecordService,
ProcessDraftService processDraftService,
ProcessNodeLinkService processNodeLinkService,
IProcessEsPermissionApplyService processEsPermissionApplyService) {
this.processAllService = processAllService;
this.processApprovalRecordService = processApprovalRecordService;
this.processDraftService = processDraftService;
this.processNodeLinkService = processNodeLinkService;
this.processEsPermissionApplyService = processEsPermissionApplyService;
}
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
@Resource
private TaskService taskService;
@Resource
private IProcessHandleService processHandleService;
@Resource
private EnterpriseStandardAuthUserService enterpriseStandardAuthUserService;
@Override
public void flowStart(EsPermissionApplyFlowVO esPermissionApplyFlowVO) {
// 流程信息
ProcessAll processAll = esPermissionApplyFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esPermissionApplyFlowVO.getProcessApprovalRecord();
// map(参数)
Map<String, Object> map = esPermissionApplyFlowVO.getMap();
// 根据流程key启动流程 同时 设置审批人员参数
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey(ProcessEsPermissionApplyCommon.KEY, map);
// 再次设置map
runtimeService.setVariables(processInstance.getId(), map);
// 处理业务表数据
handleBusinessData(esPermissionApplyFlowVO);
// 更新流程总表信息
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setPrcType(Integer.valueOf(ProcessType.PERMISSION_APPLY_PROCESS.getValue()));
processAll.setPrcStatus(ProcessStatusEnum.INCOMPLETE.getValue());
DateTime date = DateUtil.date();
processAll.setPrcNum(DateUtil.format(date, DatePattern.PURE_DATETIME_MS_PATTERN));
processAll.setCreateUserId(loginUser.getId());
processAllService.update(processAll,
new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getProcessInstanceId, processInstance.getId()));
// 根据流程实例id查询
Task task = taskService.createTaskQuery()
.processInstanceId(processInstance.getId())
.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()));
// 新增流程实例节点关联用户表
processNodeLinkService.saveNodeUserLink(processInstance.getProcessDefinitionId(), processInstance.getId(), listToString(map));
// 自动完成第一个节点
taskService.complete(task.getId());
}
private void handleBusinessData(EsPermissionApplyFlowVO esPermissionApplyFlowVO) {
ProcessEsPermissionApply processEsPermissionApply = esPermissionApplyFlowVO.getProcessEsPermissionApply();
if (StringUtils.isNotBlank(processEsPermissionApply.getId())) {
processEsPermissionApplyService.updateById(processEsPermissionApply);
} else {
processEsPermissionApplyService.save(processEsPermissionApply);
}
}
private Map<String, Object> listToString(Map<String, Object> map) {
Map<String, Object> stringObjectHashMap;
stringObjectHashMap = map.entrySet().stream().map(v -> {
if (v.getValue() instanceof List) {
List<String> list = (List<String>) v.getValue();
v.setValue(String.join(",", list));
}
return v;
}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
return stringObjectHashMap;
}
@Override
public void flowSave(EsPermissionApplyFlowVO esPermissionApplyFlowVO) {
// 处理业务表数据
handleBusinessData(esPermissionApplyFlowVO);
// 流程信息
ProcessAll processAll = esPermissionApplyFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esPermissionApplyFlowVO.getProcessApprovalRecord();
// 更新流程信息
processAllService.update(new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getId, processAll.getId())
.set(ProcessAll::getPrcName, processAll.getPrcName())
.set(ProcessAll::getPrcMes, processAll.getPrcMes())
.set(ProcessAll::getDueTime, processAll.getDueTime()));
// 更新流程审批信息
processApprovalRecordService.update(new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getTaskId, processAll.getTaskId())
.set(ProcessApprovalRecord::getCommitText, processApprovalRecord.getCommitText())
.set(ProcessApprovalRecord::getCommitFile, processApprovalRecord.getCommitFile()));
}
@Override
public EsPermissionApplyFlowVO queryDetailByProjectId(String projectId, String taskId) {
EsPermissionApplyFlowVO esPermissionApplyFlowVO = new EsPermissionApplyFlowVO();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId)
.orderByDesc(ProcessAll::getCreateTime), false);
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
// 是否存在草稿
List<ProcessDraft> processDraftList = processDraftService.list(new LambdaQueryWrapper<ProcessDraft>()
.eq(ProcessDraft::getProjectId, projectId)
.eq(ProcessDraft::getUserId, loginUser.getId())
.and(qw -> qw.ne(ProcessDraft::getSaveSource, "3")
.or().isNull(ProcessDraft::getSaveSource)));
if (!processDraftList.isEmpty()) {
String id = "";
if (Objects.isNull(processAll)) {
processAll = new ProcessAll();
id = String.valueOf(SnowflakeUtils.snowflake());
} else {
id = processAll.getId();
}
// 存在草稿
ProcessDraft processDraft = processDraftList.get(0);
// 属性拷贝
BeanUtils.copyProperties(processDraft, processAll);
processAll.setId(id);
if (StringUtils.isNotBlank(processDraft.getHandleFile())) {
processApprovalRecord.setCommitFile(processDraft.getHandleFile());
}
if (StringUtils.isNotBlank(processDraft.getHandleText())) {
processApprovalRecord.setCommitText(processDraft.getHandleText());
}
if (!Objects.isNull(processDraft.getProcessDueDate())) {
processAll.setDueTime(processDraft.getProcessDueDate());
}
if (StringUtils.isNotBlank(processDraft.getProcessDescription())) {
processAll.setPrcMes(processDraft.getProcessDescription());
}
if (StringUtils.isNotBlank(processDraft.getInfoJsonStr())) {
esPermissionApplyFlowVO.setInfoJsonStr(processDraft.getInfoJsonStr());
}
} else {
// 不存在草稿
processApprovalRecord = processApprovalRecordService.getOne(new LambdaQueryWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getUserId, loginUser.getId())
.eq(ProcessApprovalRecord::getTaskId, taskId)
, false);
}
esPermissionApplyFlowVO.setProcessAll(processAll);
esPermissionApplyFlowVO.setProcessApprovalRecord(processApprovalRecord);
return esPermissionApplyFlowVO;
}
@Override
public void flowApproval(EsPermissionApplyFlowVO esPermissionApplyFlowVO) {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// 流程信息
ProcessAll processAll = esPermissionApplyFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esPermissionApplyFlowVO.getProcessApprovalRecord();
// map(参数)
Map<String, Object> map = esPermissionApplyFlowVO.getMap();
// 更新流程信息
processAllService.update(new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getId, processAll.getId())
.set(ProcessAll::getPrcName, processAll.getPrcName())
.set(ProcessAll::getPrcMes, processAll.getPrcMes())
.set(ProcessAll::getDueTime, processAll.getDueTime()));
// 更新流程审批信息
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()));
Task task = taskService.createTaskQuery().taskId(processAll.getTaskId()).singleResult();
if (task != null) {
// 完成任务
taskService.complete(task.getId(), map);
// 处理业务表数据
handleBusinessData(esPermissionApplyFlowVO);
// 再次更新流程审批信息
processApprovalRecordService.update(new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getUserId, loginUser.getId())
.eq(ProcessApprovalRecord::getTaskId, processAll.getTaskId())
.set(ProcessApprovalRecord::getCommitFlag, processApprovalRecord.getCommitFlag()));
// 判断是否是最后一个节点
if (isLastNode(processAll.getProcessInstanceId())
&& map.containsKey("pass") && (boolean) map.get("pass")) {
// 临时权限设置
ProcessEsPermissionApplyVO processEsPermissionApplyVO = processEsPermissionApplyService.queryByProjectId(processAll.getProjectId());
List<LawsEnterpriseStandard> lawsEnterpriseStandardList = processEsPermissionApplyVO.getLawsEnterpriseStandardList();
List<String> idList = lawsEnterpriseStandardList.stream().map(LawsEnterpriseStandard::getId).collect(Collectors.toList());
LawsStandardTempPermission lawsStandardTempPermission = new LawsStandardTempPermission();
lawsStandardTempPermission.setStandardIds(String.join(",", idList));
lawsStandardTempPermission.setUserIds(processEsPermissionApplyVO.getUserId());
lawsStandardTempPermission.setAuthDate(processEsPermissionApplyVO.getExpirationDate());
enterpriseStandardAuthUserService.saveTempPermissionTwo(lawsStandardTempPermission);
}
}
}
@Override
public void flowTransfer(String taskId, String userId) {
processHandleService.transfer(taskId, userId);
}
public boolean isLastNode(String processInstanceId) {
// 查询流程实例状态
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
// 如果流程实例为null,表示流程已结束
return processInstance == null;
}
}
@@ -1,230 +0,0 @@
package com.jero.modules.activiti.process.espermissionapply.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.MessageUtils;
import com.jero.modules.activiti.process.espermissionapply.entity.ProcessEsPermissionApply;
import com.jero.modules.activiti.process.espermissionapply.mapper.ProcessEsPermissionApplyMapper;
import com.jero.modules.activiti.process.espermissionapply.service.IProcessEsPermissionApplyService;
import com.jero.modules.activiti.process.espermissionapply.vo.ProcessEsPermissionApplyVO;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthUserService;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.system.service.ISysUserService;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description: 权限申请流程
* @Author: jero-boot
* @Date: 2023-11-29
* @Version: V1.0
*/
@Service
@Transactional(rollbackFor = JeroBootException.class)
public class ProcessEsPermissionApplyServiceImpl extends ServiceImpl<ProcessEsPermissionApplyMapper, ProcessEsPermissionApply> implements IProcessEsPermissionApplyService {
private final ILawsEnterpriseStandardService lawsEnterpriseStandardService;
private final EnterpriseStandardAuthUserService enterpriseStandardAuthUserService;
private final ISysUserService sysUserService;
public ProcessEsPermissionApplyServiceImpl(ILawsEnterpriseStandardService lawsEnterpriseStandardService,
EnterpriseStandardAuthUserService enterpriseStandardAuthUserService,
ISysUserService sysUserService) {
this.lawsEnterpriseStandardService = lawsEnterpriseStandardService;
this.enterpriseStandardAuthUserService = enterpriseStandardAuthUserService;
this.sysUserService = sysUserService;
}
/**
* 分页查询
*
* @param processEsPermissionApply
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@Override
public IPage<ProcessEsPermissionApply> queryPage(ProcessEsPermissionApply processEsPermissionApply, Integer pageNo, Integer pageSize,
HttpServletRequest req) {
QueryWrapper<ProcessEsPermissionApply> queryWrapper = QueryGenerator.initQueryWrapper(processEsPermissionApply, req.getParameterMap());
Page<ProcessEsPermissionApply> page = new Page<>(pageNo, pageSize);
return page(page, queryWrapper);
}
/**
* 列表查询
*
* @param processEsPermissionApply
* @param req
* @return
*/
@Override
public List<ProcessEsPermissionApply> queryList(ProcessEsPermissionApply processEsPermissionApply, HttpServletRequest req) {
return list(QueryGenerator.initQueryWrapper(processEsPermissionApply, req.getParameterMap()));
}
/**
* 保存
*
* @param processEsPermissionApply
* @return
*/
@Override
public void add(ProcessEsPermissionApply processEsPermissionApply) {
Date now = new Date();
processEsPermissionApply.setCreateTime(now);
processEsPermissionApply.setUpdateTime(now);
save(processEsPermissionApply);
}
/**
* 更新
*
* @param processEsPermissionApply
* @return
*/
@Override
public void editById(ProcessEsPermissionApply processEsPermissionApply) {
Date now = new Date();
processEsPermissionApply.setUpdateTime(now);
saveOrUpdate(processEsPermissionApply);
}
/**
* 通过id删除
*
* @param id
* @return
*/
@Override
public void deleteById(String id) {
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public ProcessEsPermissionApply queryById(String id) {
return getById(id);
}
@Override
public ProcessEsPermissionApplyVO queryByProjectId(String projectId) {
ProcessEsPermissionApplyVO processEsPermissionApplyVO = new ProcessEsPermissionApplyVO();
// 通过项目id查询
ProcessEsPermissionApply processEsPermissionApply = getOne(
new LambdaQueryWrapper<ProcessEsPermissionApply>()
.eq(ProcessEsPermissionApply::getProjectId, projectId));
BeanUtils.copyProperties(processEsPermissionApply, processEsPermissionApplyVO);
if (StringUtils.isNotBlank(processEsPermissionApply.getStandardNumbers())){
List<String> standardNumberList = Arrays.asList(processEsPermissionApply.getStandardNumbers().split(","));
List<LawsEnterpriseStandard> list = lawsEnterpriseStandardService.list(
new LambdaQueryWrapper<LawsEnterpriseStandard>()
.in(LawsEnterpriseStandard::getStandardNumber, standardNumberList));
// 排序
List<LawsEnterpriseStandard> newList = new ArrayList<>();
for (String standardNumber : standardNumberList) {
Optional<LawsEnterpriseStandard> optionalLawsEnterpriseStandard = list.stream().filter(lawsEnterpriseStandard -> standardNumber.equals(lawsEnterpriseStandard.getStandardNumber())).findFirst();
optionalLawsEnterpriseStandard.ifPresent(newList::add);
}
processEsPermissionApplyVO.setLawsEnterpriseStandardList(newList);
}
// 翻译
if (StringUtils.isNotBlank(processEsPermissionApplyVO.getUserId())){
processEsPermissionApplyVO.setUserDictText(sysUserService.dictByIdsOrUserNames(processEsPermissionApplyVO.getUserId(), ""));
}
return processEsPermissionApplyVO;
}
@Override
public IPage<ManyStandardSelectionBox> queryEnterpriseByPage(ManyStandardSelectionBoxVO manyStandardSelectionBoxVO, Integer pageNo, Integer pageSize) {
LambdaQueryWrapper<LawsEnterpriseStandard> queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotBlank(manyStandardSelectionBoxVO.getStandardNumberOrName())){
queryWrapper.and(qw ->
qw.like(LawsEnterpriseStandard::getStandardNumber, manyStandardSelectionBoxVO.getStandardNumberOrName())
.or().like(LawsEnterpriseStandard::getStandardName, manyStandardSelectionBoxVO.getStandardNumberOrName()));
}
queryWrapper.orderByDesc(LawsEnterpriseStandard::getCreateTime);
// 查询企标数据
List<LawsEnterpriseStandard> list = lawsEnterpriseStandardService.list(queryWrapper);
List<ManyStandardSelectionBox> result = new ArrayList<>();
// 权限校验
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
for (LawsEnterpriseStandard lawsEnterpriseStandard : list) {
boolean b = enterpriseStandardAuthUserService.hasESAuth(loginUser.getId(), Collections.singletonList(lawsEnterpriseStandard.getId()));
if (!b){
ManyStandardSelectionBox manyStandardSelectionBox = new ManyStandardSelectionBox();
BeanUtils.copyProperties(lawsEnterpriseStandard, manyStandardSelectionBox);
result.add(manyStandardSelectionBox);
}
}
// 手动分页
IPage<ManyStandardSelectionBox> page = new Page<>(pageNo ,pageSize);
page.setTotal(result.size());
page.setRecords(
result.stream()
.skip((long) (Math.max(1, pageNo) - 1) * pageSize)
.limit(pageSize)
.collect(Collectors.toList()));
return page;
}
@Override
public Result<T> permissionCheck(JSONObject jsonObject) {
String ids = String.valueOf(jsonObject.get("ids"));
List<String> list = Arrays.asList(ids.split(","));
List<LawsEnterpriseStandard> lawsEnterpriseStandardList = lawsEnterpriseStandardService.listByIds(list);
List<String> standardNameList = new ArrayList<>();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
for (LawsEnterpriseStandard lawsEnterpriseStandard : lawsEnterpriseStandardList) {
boolean b = enterpriseStandardAuthUserService.hasESAuth(loginUser.getId(), Collections.singletonList(lawsEnterpriseStandard.getId()));
if (b){
standardNameList.add(lawsEnterpriseStandard.getStandardName());
}
}
if (!standardNameList.isEmpty()){
return Result.error("企标编号为:" + String.join(",", standardNameList) + "已拥有权限,请重新选择没有权限的企标!");
}
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
}
@@ -1,40 +0,0 @@
package com.jero.modules.activiti.process.espermissionapply.vo;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.process.espermissionapply.entity.ProcessEsPermissionApply;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Map;
/**
* @ClassName: EsPermissionApplyFlowVO
* @Description:
* @Author: yjz
* @Date: 2023-11-29 18:47
* @Version: 1.0
**/
@Data
public class EsPermissionApplyFlowVO {
/**流程信息*/
@ApiModelProperty(value = "流程信息")
private ProcessAll processAll;
/**流程审批信息*/
@ApiModelProperty(value = "流程审批信息")
private ProcessApprovalRecord processApprovalRecord;
/**业务基本信息*/
@ApiModelProperty(value = "业务基本信息")
private ProcessEsPermissionApply processEsPermissionApply;
/**map*/
@ApiModelProperty(value = "map")
private Map<String, Object> map;
/**草稿信息json字符串*/
@ApiModelProperty(value = "草稿信息json字符串")
private String infoJsonStr;
/**
* 保存来源
*/
@ApiModelProperty(value="保存来源(1:待办 2:草稿)")
private String saveSource;
}
@@ -1,22 +0,0 @@
package com.jero.modules.activiti.process.espermissionapply.vo;
import com.jero.modules.activiti.process.espermissionapply.entity.ProcessEsPermissionApply;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @ClassName: ProcessEsPermissionApplyVO
* @Description:
* @Author: yjz
* @Date: 2023-11-29 18:49
* @Version: 1.0
**/
@Data
public class ProcessEsPermissionApplyVO extends ProcessEsPermissionApply {
/**企业标准*/
@ApiModelProperty(value = "企业标准")
private List<LawsEnterpriseStandard> lawsEnterpriseStandardList;
}
@@ -1,90 +0,0 @@
package com.jero.modules.activiti.process.fb.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.DictPoint;
import com.jero.modules.activiti.process.common.entity.TransferVO;
import com.jero.modules.activiti.process.fb.entity.ProcessFbEntryChange;
import com.jero.modules.activiti.process.fb.service.IProcessFbEntryChangeService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
/**
* @Description: 标准法规入库/变更流程
* @Author: jero-boot
* @Date: 2023-11-01
* @Version: V1.0
*/
@Api(tags="fb标准法规入库_变更流程")
@RestController
@RequestMapping("/process/fb/processFbEntryChange")
@Slf4j
public class ProcessFbEntryChangeController extends JeroController<ProcessFbEntryChange, IProcessFbEntryChangeService> {
@Autowired
private IProcessFbEntryChangeService processFbEntryChangeService;
@DictPoint
@GetMapping("/queryProcessInfoVO")
@AutoLog(value = "标准法规入库_变更流程-查询流程信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "draftId", value = "草稿id"),
@ApiImplicitParam(name = "processInstanceId", value = "流程实例id"),
@ApiImplicitParam(name = "taskId", value = "任务id")
})
@ApiOperation("标准法规入库_变更流程-查询流程信息")
public Result<ProcessInfoVO<ProcessFbEntryChange>> queryProcessInfoVO(String draftId, String processInstanceId, String taskId, String projectId){
ProcessInfoVO<ProcessFbEntryChange> processInfoVO = processFbEntryChangeService.queryProcessInfoVO(draftId, processInstanceId, taskId, projectId);
return Result.OK(processInfoVO);
}
@AutoLog(value = "标准法规入库_变更流程-发起流程")
@ApiOperation(value = "标准法规入库_变更流程-发起流程", notes = "流程处理-发起流程")
@PostMapping(value = "/startProcess")
public Result<T> startProcess(@Validated @RequestBody ProcessInfoVO<ProcessFbEntryChange> processInfoVO) {
processFbEntryChangeService.startProcess(processInfoVO);
return Result.OK();
}
@AutoLog(value = "标准法规入库_变更流程-同意")
@ApiOperation(value="标准法规入库_变更流程-同意", notes="标准法规入库_变更流程-同意")
@PostMapping("/agree")
public Result<T> agree(@Validated @RequestBody ProcessInfoVO<ProcessFbEntryChange> processInfoVO) {
processFbEntryChangeService.approveTask(processInfoVO, true);
return Result.OK();
}
@AutoLog(value = "标准法规入库_变更流程-驳回")
@ApiOperation(value="标准法规入库_变更流程-驳回", notes="标准法规入库_变更流程-驳回")
@PostMapping("/reject")
public Result<T> reject(@Validated @RequestBody ProcessInfoVO<ProcessFbEntryChange> processInfoVO) {
processFbEntryChangeService.approveTask(processInfoVO, false);
return Result.OK();
}
@AutoLog(value = "标准法规入库_变更流程-转办")
@ApiOperation(value="标准法规入库_变更流程-转办", notes="标准法规入库_变更流程-转办")
@PostMapping(value = "/transfer")
public Result<T> transfer(@RequestBody TransferVO transferVO) {
processFbEntryChangeService.transfer(transferVO.getTaskId(), transferVO.getUserId());
return Result.OK();
}
@AutoLog(value = "标准法规入库_变更流程-保存为草稿")
@ApiOperation(value = "标准法规入库_变更流程-保存为草稿", notes = "标准法规入库_变更流程-保存为草稿")
@PostMapping(value = "/saveToDraft")
public Result<T> saveToDraft(@Validated @RequestBody ProcessInfoVO<ProcessFbEntryChange> processInfoVO) {
processFbEntryChangeService.saveToDraft(processInfoVO);
return Result.OK();
}
}
@@ -1,86 +0,0 @@
package com.jero.modules.activiti.process.fb.controller;
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.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.DictPoint;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.entity.ProcessNode;
import com.jero.modules.activiti.mapper.ProcessNodeMapper;
import com.jero.modules.activiti.process.common.common.DraftCommon;
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
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.laws.common.util.CurrentUserUtil;
import com.spire.ms.System.Collections.ArrayList;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.HistoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.apache.shiro.SecurityUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
/**
* @Author: liao
* @Date: 2023/11/7 17:20
* @Description: 流程信息
*/
@Api(tags="fb流程信息")
@RestController
@RequestMapping("/process/fb/processFbInfo")
@Slf4j
public class ProcessFbInfoController {
@Resource
private ProcessNodeMapper processNodeMapper;
@Resource
private IProcessHandleService processHandleService;
@Resource
private ProcessDraftService processDraftService;
@Resource
private RuntimeService runtimeService;
@Resource
private TaskService taskService;
@Resource
private HistoryService historyService;
@Resource
private ActFlowCommonService actFlowCommonService;
@DictPoint
@GetMapping("/getNodeList")
@ApiImplicitParams({
@ApiImplicitParam(name = "processDefinitionKey", value = "流程定义key"),
@ApiImplicitParam(name = "processInstanceId", value = "流程实例id(这个参数会去查绑定好的用户)")
})
@ApiOperation("获得节点列表")
public Result<List<ProcessNode>> getNodeList(String processDefinitionKey, String processInstanceId) {
String processDefinitionId = processHandleService.getDefinitionIdByKey(processDefinitionKey);
//查询节点信息
List<ProcessNode> processNodeList = processNodeMapper.selectByIdPdIdAndPiId(processDefinitionId,processInstanceId);
return Result.OK(processNodeList);
}
}
@@ -1,98 +0,0 @@
package com.jero.modules.activiti.process.fb.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.DictPoint;
import com.jero.common.system.base.controller.JeroController;
import com.jero.modules.activiti.process.common.entity.TransferVO;
import com.jero.modules.activiti.process.fb.entity.ProcessFbStandardConsultation;
import com.jero.modules.activiti.process.fb.service.IProcessFbStandardConsultationService;
import com.jero.modules.activiti.process.fb.vo.ProcessFbStandardConsultationVO;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* @Description: 标准征求意见流程表
* @Author: jero-boot
* @Date: 2023-11-07
* @Version: V1.0
*/
@Api(tags="fb标准征求意见流程表")
@RestController
@RequestMapping("/process/fb/processFbStandardConsultation")
@Slf4j
public class ProcessFbStandardConsultationController extends JeroController<ProcessFbStandardConsultation, IProcessFbStandardConsultationService> {
@Autowired
private IProcessFbStandardConsultationService processFbStandardConsultationService;
@DictPoint
@GetMapping("/queryProcessInfoVO")
@AutoLog(value = "标准征求意见流程-查询流程信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "draftId", value = "草稿id"),
@ApiImplicitParam(name = "taskId", value = "任务id"),
@ApiImplicitParam(name = "processInstanceId", value = "流程实例id")
})
@ApiOperation("标准征求意见流程-查询流程信息")
public Result<ProcessInfoVO<ProcessFbStandardConsultationVO>> queryProcessInfoVO(String draftId, String processInstanceId, String taskId, String projectId){
ProcessInfoVO<ProcessFbStandardConsultationVO> processInfoVO = processFbStandardConsultationService.queryProcessInfoVO(draftId, processInstanceId, taskId, projectId);
return Result.OK(processInfoVO);
}
@AutoLog(value = "标准征求意见流程-发起流程")
@ApiOperation(value = "标准征求意见流程-发起流程", notes = "标准征求意见流程-发起流程")
@PostMapping(value = "/startProcess")
public Result<T> startProcess(@Validated @RequestBody ProcessInfoVO<ProcessFbStandardConsultationVO> processInfoVO) {
processFbStandardConsultationService.startProcess(processInfoVO);
return Result.OK();
}
@AutoLog(value = "标准征求意见流程-同意")
@ApiOperation(value="标准征求意见流程-同意", notes="标准征求意见流程-同意")
@PostMapping("/agree")
public Result<T> agree(@Validated @RequestBody ProcessInfoVO<ProcessFbStandardConsultationVO> processInfoVO) {
processFbStandardConsultationService.approveTask(processInfoVO, true);
return Result.OK();
}
@AutoLog(value = "标准征求意见流程-驳回")
@ApiOperation(value="标准征求意见流程-驳回", notes="标准征求意见流程-驳回")
@PostMapping("/reject")
public Result<T> reject(@Validated @RequestBody ProcessInfoVO<ProcessFbStandardConsultationVO> processInfoVO) {
processFbStandardConsultationService.approveTask(processInfoVO, false);
return Result.OK();
}
@AutoLog(value = "标准征求意见流程-提交")
@ApiOperation(value="标准征求意见流程-提交", notes="标准征求意见流程-提交")
@PostMapping("/submit")
public Result<T> submit(@Validated @RequestBody ProcessInfoVO<ProcessFbStandardConsultationVO> processInfoVO) {
processFbStandardConsultationService.submit(processInfoVO);
return Result.OK();
}
@AutoLog(value = "标准征求意见流程-保存为草稿")
@ApiOperation(value = "标准征求意见流程-保存为草稿", notes = "标准征求意见流程-保存为草稿")
@PostMapping(value = "/saveToDraft")
public Result<T> saveToDraft(@Validated @RequestBody ProcessInfoVO<ProcessFbStandardConsultationVO> processInfoVO) {
processFbStandardConsultationService.saveToDraft(processInfoVO);
return Result.OK();
}
@AutoLog(value = "标准征求意见流程-转办")
@ApiOperation(value="标准征求意见流程-转办", notes="标准征求意见流程-转办")
@PostMapping(value = "/transfer")
public Result<T> transfer(@RequestBody TransferVO transferVO) {
processFbStandardConsultationService.transfer(transferVO.getTaskId(), transferVO.getUserId(), transferVO.getProjectId());
return Result.OK();
}
}
@@ -1,119 +0,0 @@
package com.jero.modules.activiti.process.fb.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.entity.TransferVO;
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
import com.jero.modules.activiti.process.fb.entity.ProcessFbStandardPurchase;
import com.jero.modules.activiti.process.fb.service.IProcessFbStandardPurchaseService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import java.util.List;
/**
* @Description: 法规采购流程表
* @Author: jero-boot
* @Date: 2023-11-14
* @Version: V1.0
*/
@Api(tags = "法规采购流程表")
@RestController
@RequestMapping("/process/fb/processFbStandardPurchase")
@Slf4j
public class ProcessFbStandardPurchaseController extends JeroController<ProcessFbStandardPurchase, IProcessFbStandardPurchaseService> {
@Resource
private IProcessFbStandardPurchaseService processFbStandardPurchaseService;
@Resource
private ActFlowCommonService actFlowCommonService;
@GetMapping("/queryProcessInfoVO")
@AutoLog(value = "法规采购流程表-查询流程信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "draftId", value = "草稿id"),
@ApiImplicitParam(name = "processInstanceId", value = "流程实例id"),
@ApiImplicitParam(name = "taskId", value = "任务id")
})
@ApiOperation("法规采购流程表-查询流程信息")
public Result<?> queryProcessInfoVO(String draftId, String processInstanceId, String taskId, String projectId) {
ProcessDraft draft = actFlowCommonService.getExistDraftByTaskId(taskId, ProcessTypeEnum.FB_STANDARD_PURCHASE);
if (draft != null) {
return Result.OK(draft);
}
ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO = processFbStandardPurchaseService.queryProcessInfoVO(draftId, processInstanceId, taskId, projectId);
return Result.OK(processInfoVO);
}
@AutoLog(value = "法规采购流程表-发起流程")
@ApiOperation(value = "法规采购流程表-发起流程", notes = "流程处理-发起流程")
@PostMapping(value = "/startProcess")
public Result<T> startProcess(@Validated @RequestBody ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO) {
processFbStandardPurchaseService.startProcess(processInfoVO);
return Result.OK();
}
@AutoLog(value = "法规采购流程表-同意")
@ApiOperation(value = "法规采购流程表-同意", notes = "法规采购流程表-同意")
@PostMapping("/agree")
public Result<T> agree(@Validated @RequestBody ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO) {
processFbStandardPurchaseService.approveTask(processInfoVO, true);
return Result.OK();
}
@AutoLog(value = "法规采购流程表-驳回")
@ApiOperation(value = "法规采购流程表-驳回", notes = "法规采购流程表-驳回")
@PostMapping("/reject")
public Result<T> reject(@Validated @RequestBody ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO) {
processFbStandardPurchaseService.approveTask(processInfoVO, false);
return Result.OK();
}
@AutoLog(value = "法规采购流程表-转办")
@ApiOperation(value = "法规采购流程表-转办", notes = "法规采购流程表-转办")
@PostMapping(value = "/transfer")
public Result<T> transfer(@RequestBody TransferVO transferVO) {
processFbStandardPurchaseService.transfer(transferVO.getTaskId(), transferVO.getUserId());
return Result.OK();
}
@AutoLog(value = "法规采购流程表-保存为草稿")
@ApiOperation(value = "法规采购流程表-保存为草稿", notes = "法规采购流程表-保存为草稿")
@PostMapping(value = "/saveToDraft")
public Result<T> saveToDraft(@Validated @RequestBody ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO) {
processFbStandardPurchaseService.saveToDraft(processInfoVO);
return Result.OK();
}
@AutoLog(value = "法规采购流程表-导出")
@ApiOperation(value = "法规采购流程表-导出", notes = "法规采购流程表-导出")
@GetMapping(value = "/exportXls")
public ModelAndView exportXls(@RequestParam(name = "businessId") String businessId) {
return processFbStandardPurchaseService.exportXls(businessId);
}
@AutoLog(value = "法规采购流程表-抄送")
@ApiOperation(value = "法规采购流程表-抄送", notes = "法规采购流程表-抄送")
@GetMapping(value = "/carbonCopy")
public Result<T> carbonCopy(@RequestParam(name = "taskId") String taskId,
@RequestParam(name = "userId") String userIds) {
processFbStandardPurchaseService.carbonCopy(taskId, userIds);
return Result.OK();
}
}
@@ -1,105 +0,0 @@
package com.jero.modules.activiti.process.fb.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
/**
* @Description: 标准征求意见流程-征求意见列表表
* @Author: jero-boot
* @Date: 2023-11-07
* @Version: V1.0
*/
@Data
@TableName("process_fb_consultation_list")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="process_fb_consultation_list对象", description="标准征求意见流程-征求意见列表表")
public class ProcessFbConsultationList implements Serializable {
private static final long serialVersionUID = 1L;
/**主键ID*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键ID")
private java.lang.String id;
/**业务id*/
@Excel(name = "业务id", width = 15)
@ApiModelProperty(value = "业务id")
private java.lang.String businessId;
/**用户关联表id*/
@Excel(name = "用户关联表id", width = 15)
@ApiModelProperty(value = "用户关联表id")
private java.lang.String userLinkId;
/**序号*/
@Excel(name = "序号", width = 15)
@ApiModelProperty(value = "序号")
private java.lang.String serialNumber;
/**章节id*/
@Excel(name = "章节id", width = 15)
@ApiModelProperty(value = "章节id")
private java.lang.String chapterId;
/**章节编号*/
@Excel(name = "章节编号", width = 15)
@ApiModelProperty(value = "章节编号")
private java.lang.String chapterNumber;
/**章节名称*/
@Excel(name = "章节名称", width = 15)
@ApiModelProperty(value = "章节名称")
private java.lang.String chapterName;
/**修改前*/
@Excel(name = "修改前", width = 15)
@ApiModelProperty(value = "修改前")
private java.lang.String modificationBefore;
/**修改后*/
@Excel(name = "修改后", width = 15)
@ApiModelProperty(value = "修改后")
private java.lang.String modificationAfter;
/**修改理由*/
@Excel(name = "修改理由", width = 15)
@ApiModelProperty(value = "修改理由")
private java.lang.String modificationReason;
/**模块负责人意见(1采纳,2部分采纳,3不采纳)*/
@Excel(name = "模块负责人意见(1采纳,2部分采纳,3不采纳)", width = 15)
@ApiModelProperty(value = "模块负责人意见(1采纳,2部分采纳,3不采纳)")
@Dict(dicCode = "consultation_opinion")
private java.lang.String isAdopt;
@TableField(exist = false)
private java.lang.String isAdopt_dictText;
/**依据描述*/
@Excel(name = "依据描述", width = 15)
@ApiModelProperty(value = "依据描述")
private java.lang.String basisDescription;
/**依据材料*/
@Excel(name = "依据材料", width = 15)
@ApiModelProperty(value = "依据材料")
private java.lang.String basisFile;
/**依据材料名称*/
@Excel(name = "依据材料名称", width = 15)
@ApiModelProperty(value = "依据材料名称")
@TableField(exist = false)
private java.lang.String basisFileName;
/**设计工程师名称*/
@Excel(name = "设计工程师名称", width = 15)
@ApiModelProperty(value = "设计工程师名称")
private java.lang.String designEngineerName;
/**设计工程师id*/
@Excel(name = "设计工程师id", width = 15)
@ApiModelProperty(value = "设计工程师id")
private java.lang.String designEngineerId;
/**提出部门*/
@Excel(name = "提出部门", width = 15)
@ApiModelProperty(value = "提出部门")
@TableField(exist = false)
private java.lang.String depart;
}
@@ -1,75 +0,0 @@
package com.jero.modules.activiti.process.fb.entity;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
/**
* @Description: 标准征求意见流程-用户关联表
* @Author: jero-boot
* @Date: 2023-11-07
* @Version: V1.0
*/
@Data
@TableName("process_fb_consultation_user_link")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="process_fb_consultation_user_link对象", description="标准征求意见流程-用户关联表")
public class ProcessFbConsultationUserLink implements Serializable {
private static final long serialVersionUID = 1L;
/**主键ID*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键ID")
private java.lang.String id;
/**业务id*/
@Excel(name = "业务id", width = 15)
@ApiModelProperty(value = "业务id")
private java.lang.String businessId;
/**部门主管级领导*/
@Excel(name = "部门主管级领导", width = 15)
@ApiModelProperty(value = "部门主管级领导")
private java.lang.String departLeaderId;
/**模块负责人*/
@Excel(name = "模块负责人", width = 15)
@ApiModelProperty(value = "模块负责人")
private java.lang.String moduleOwnerId;
@TableField(exist = false)
private java.lang.String moduleOwnerId_dictText;
/**设计工程师*/
@Excel(name = "设计工程师", width = 15)
@ApiModelProperty(value = "设计工程师")
private java.lang.String designEngineerId;
@TableField(exist = false)
private java.lang.String designEngineerId_dictText;
/**下发人员类型(1模块负责人、2设计工程师)*/
@Excel(name = "下发人员类型(1模块负责人、2设计工程师)", width = 15)
@ApiModelProperty(value = "下发人员类型(1模块负责人、2设计工程师)")
private java.lang.String userType;
/**父执行实例流id*/
@Excel(name = "父执行实例流id", width = 15)
@ApiModelProperty(value = "父执行实例流id")
private java.lang.String parentExecutionId;
/**部门主管级领导原始办理人*/
@Excel(name = "部门主管级领导原始办理人", width = 15)
@ApiModelProperty(value = "部门主管级领导原始办理人")
private java.lang.String originDepartLeaderId;
/**模块负责人原始办理人*/
@Excel(name = "模块负责人原始办理人", width = 15)
@ApiModelProperty(value = "模块负责人原始办理人")
private java.lang.String originModuleOwnerId;
/**设计工程师原始办理人*/
@Excel(name = "设计工程师原始办理人", width = 15)
@ApiModelProperty(value = "设计工程师原始办理人")
private java.lang.String originDesignEngineerId;
}
@@ -1,95 +0,0 @@
package com.jero.modules.activiti.process.fb.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Map;
/**
* @Description: 标准法规入库/变更流程
* @Author: jero-boot
* @Date: 2023-11-01
* @Version: V1.0
*/
@Data
@TableName("process_fb_entry_change")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="process_fb_entry_change对象", description="标准法规入库_变更流程")
public class ProcessFbEntryChange implements Serializable {
private static final long serialVersionUID = 1L;
/**主键ID*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键ID")
private java.lang.String id;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "更新时间")
private java.util.Date updateTime;
/**所属部门*/
@Excel(name = "所属部门", width = 15)
@ApiModelProperty(value = "所属部门")
private java.lang.String orgCode;
/**0表示未删除,1表示删除*/
@Excel(name = "0表示未删除,1表示删除", width = 15)
@ApiModelProperty(value = "0表示未删除,1表示删除")
private java.lang.Integer delFlag;
/**来源(1国内、2海外)*/
@Excel(name = "来源(1国内、2海外)", width = 15)
@ApiModelProperty(value = "来源(1国内、2海外)")
private java.lang.String source;
/**来源(1国内、2海外) 翻译*/
@ApiModelProperty(value = "来源(1国内、2海外) 翻译")
@TableField(exist = false)
private java.lang.String source_dictText;
/**操作类型(1标准法规入库、2标准法规变更)*/
@Excel(name = "操作类型(1标准法规入库、2标准法规变更)", width = 15)
@ApiModelProperty(value = "操作类型(1标准法规入库、2标准法规变更)")
private java.lang.String operateType;
/**操作类型(1标准法规入库、2标准法规变更)*/
@ApiModelProperty(value = "操作类型(1标准法规入库、2标准法规变更) 翻译")
@TableField(exist = false)
private java.lang.String operateType_dictText;
/**标准编号*/
@Excel(name = "标准编号", width = 15)
@ApiModelProperty(value = "标准编号")
private java.lang.String standardNumber;
/**用户id*/
@Excel(name = "用户id", width = 15)
@ApiModelProperty(value = "用户id")
private java.lang.String userId;
/**JSON字符串*/
@Excel(name = "JSON字符串", width = 15)
@ApiModelProperty(value = "JSON字符串")
private java.lang.String businessJson;
@ApiModelProperty(value = "法规数据")
@TableField(exist = false)
private Map<String, Object> businessMap;
}
@@ -1,124 +0,0 @@
package com.jero.modules.activiti.process.fb.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
* @Description: 标准征求意见流程表
* @Author: jero-boot
* @Date: 2023-11-07
* @Version: V1.0
*/
@Data
@TableName("process_fb_standard_consultation")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="process_fb_standard_consultation对象", description="标准征求意见流程表")
public class ProcessFbStandardConsultation implements Serializable {
private static final long serialVersionUID = 1L;
/**主键ID*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键ID")
private java.lang.String id;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private java.util.Date updateTime;
/**所属部门*/
@Excel(name = "所属部门", width = 15)
@ApiModelProperty(value = "所属部门")
private java.lang.String orgCode;
/**0表示未删除,1表示删除*/
@Excel(name = "0表示未删除,1表示删除", width = 15)
@ApiModelProperty(value = "0表示未删除,1表示删除")
private java.lang.Integer delFlag;
/**标准编号*/
@Excel(name = "标准编号", width = 15)
@ApiModelProperty(value = "标准编号")
private java.lang.String standardNumber;
/**标准名称*/
@Excel(name = "标准名称", width = 15)
@ApiModelProperty(value = "标准名称")
private java.lang.String standardName;
/**标准文本*/
@Excel(name = "标准文本", width = 15)
@ApiModelProperty(value = "标准文本")
private java.lang.String standardText;
/**标准文本文件*/
@Excel(name = "标准文本文件", width = 15)
@ApiModelProperty(value = "标准文本文件")
private java.lang.String standardTextFileId;
/**相关文件*/
@Excel(name = "相关文件", width = 15)
@ApiModelProperty(value = "相关文件")
private java.lang.String relatedFile;
/**征求意见结束日期*/
@Excel(name = "征求意见结束日期", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "征求意见结束日期")
private java.util.Date consultationDueDate;
/**征求意见开始日期(征求意见周期)*/
@Excel(name = "征求意见开始日期(征求意见周期)", width = 15)
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "征求意见开始日期(征求意见周期)")
private java.util.Date consultationBeginDate;
/**征求意见结束日期(征求意见周期)*/
@Excel(name = "征求意见结束日期(征求意见周期)", width = 15)
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "征求意见结束日期(征求意见周期)")
private java.util.Date consultationEndDate;
/**征求意见周期*/
@Excel(name = "征求意见周期", width = 15)
@ApiModelProperty(value = "征求意见周期")
@TableField(exist = false)
private java.lang.String consultationPeriod;
/**标准名称/编号*/
@Excel(name = "标准名称/编号", width = 15)
@ApiModelProperty(value = "标准名称/编号")
@TableField(exist = false)
private java.lang.String standardNameNumber;
/**收准来源(1国内、2海外、3企标)*/
@ApiModelProperty(value = "标准来源(1国内、2海外、3企标)")
@TableField(exist = false)
private String source;
/**标准id*/
@Excel(name = "标准id", width = 15)
@ApiModelProperty(value = "标准id")
private java.lang.String standardId;
}
@@ -1,74 +0,0 @@
package com.jero.modules.activiti.process.fb.entity;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 法规采购流程表
* @Author: jero-boot
* @Date: 2023-11-14
* @Version: V1.0
*/
@Data
@TableName("process_fb_standard_purchase")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="process_fb_standard_purchase对象", description="法规采购流程表")
public class ProcessFbStandardPurchase implements Serializable {
private static final long serialVersionUID = 1L;
/**主键ID*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键ID")
private java.lang.String id;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "更新时间")
private java.util.Date updateTime;
/**所属部门*/
@ApiModelProperty(value = "所属部门")
private java.lang.String orgCode;
/**0表示未删除,1表示删除*/
@ApiModelProperty(value = "0表示未删除,1表示删除")
private java.lang.Integer delFlag;
/**业务id*/
@ApiModelProperty(value = "业务id")
private java.lang.String businessId;
/**排序*/
@ApiModelProperty(value = "排序")
private java.lang.Integer sort;
/**标准编号*/
@Excel(name = "标准号", width = 15)
@ApiModelProperty(value = "标准编号")
private java.lang.String standardNumber;
/**标准名称*/
@Excel(name = "标准名称", width = 15)
@ApiModelProperty(value = "标准名称")
private java.lang.String standardName;
/**采购理由*/
@ApiModelProperty(value = "采购理由")
private java.lang.String purchaseReason;
}
@@ -1,93 +0,0 @@
package com.jero.modules.activiti.process.fb.job;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.process.fb.common.ConsultationTaskKey;
import com.jero.modules.activiti.process.fb.common.FbCommon;
import com.jero.modules.activiti.process.fb.service.IProcessFbStandardConsultationService;
import com.jero.modules.activiti.process.fb.vo.NodeDispose;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.*;
import org.apache.commons.collections4.CollectionUtils;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
* @ClassName: DesignEngineerOverDueJob3
* @Description:
* @Author: yjz
* @Date: 2024-01-31 10:59
* @Version: 1.0
**/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
public class DepartLeaderStartOverDueJob implements Job {
@Resource
private IProcessFbStandardConsultationService processFbStandardConsultationService;
@Resource
private ProcessApprovalRecordService processApprovalRecordService;
@Resource
private TaskService taskService;
@Resource
private RuntimeService runtimeService;
/**
* 征求意见流程-超过征求意见结束日期,各部所主管级领导未分发时
* @param jobExecutionContext
* @throws JobExecutionException
*/
@Override
public void execute(JobExecutionContext jobExecutionContext) {
log.info("征求意见流程-超过征求意见结束日期,各部所主管级领导 部分/全部 未分发时任务开始");
long num = 0L;
// 查询超过征求意见结束日期的各部所主管级领导未分发节点情况
List<NodeDispose> nodeDisposeCount =
processFbStandardConsultationService.findNodeDisposeCount(ConsultationTaskKey.DEPART_LEADER_START_1);
if (CollectionUtils.isNotEmpty(nodeDisposeCount)){
List<String> processInstanceIdList = nodeDisposeCount.stream()
.map(NodeDispose::getProcessInstanceId)
.collect(Collectors.toList());
// 未完成审批数据
List<ProcessApprovalRecord> processApprovalRecordList = processApprovalRecordService.list(
new LambdaQueryWrapper<ProcessApprovalRecord>()
.in(ProcessApprovalRecord::getProcessInstanceId, processInstanceIdList)
.eq(ProcessApprovalRecord::getNodeId, ConsultationTaskKey.DEPART_LEADER_START_1)
.eq(ProcessApprovalRecord::getOverDue, YesOrNoEnum.NO.getValue())
.eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.INCOMPLETE.getValue()));
// 更新超期标识
if (!processApprovalRecordList.isEmpty()){
List<String> idList = processApprovalRecordList.stream()
.map(ProcessApprovalRecord::getId).collect(Collectors.toList());
processApprovalRecordService.update(
new LambdaUpdateWrapper<ProcessApprovalRecord>()
.in(ProcessApprovalRecord::getId, idList)
.eq(ProcessApprovalRecord::getOverDue, YesOrNoEnum.NO.getValue())
.set(ProcessApprovalRecord::getOverDue, YesOrNoEnum.YES.getValue()));
}
for (ProcessApprovalRecord processApprovalRecord : processApprovalRecordList) {
num += 1;
// 设置网关条件
runtimeService.setVariableLocal(processApprovalRecord.getProcessInstanceId(),
FbCommon.VARIABLE_PASS_FIRST, 3);
// 完成任务
taskService.complete(processApprovalRecord.getTaskId());
}
}
log.info("征求意见流程-超过征求意见结束日期,各部所主管级领导 部分/全部 未分发时任务结束");
log.info("征求意见流程-超过征求意见结束日期,任务数量{}", num);
}
}

Some files were not shown because too many files have changed in this diff Show More