Browse Source

自定义流程接口-生成pdf

wangliang 3 years ago
parent
commit
373285244c

+ 44 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/custom/listener/ProcessEventListener.java

@@ -1,12 +1,28 @@
 package com.qmth.distributed.print.business.activiti.custom.listener;
 package com.qmth.distributed.print.business.activiti.custom.listener;
 
 
+import com.qmth.distributed.print.business.entity.ExamTask;
+import com.qmth.distributed.print.business.entity.TFFlowLog;
+import com.qmth.distributed.print.business.enums.TFCustomTypeEnum;
+import com.qmth.distributed.print.business.service.ExamTaskService;
+import com.qmth.distributed.print.business.service.PrintCommonService;
+import com.qmth.teachcloud.common.contant.SpringContextHolder;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.service.SysUserService;
+import org.activiti.engine.HistoryService;
 import org.activiti.engine.delegate.event.ActivitiEvent;
 import org.activiti.engine.delegate.event.ActivitiEvent;
 import org.activiti.engine.delegate.event.ActivitiEventListener;
 import org.activiti.engine.delegate.event.ActivitiEventListener;
+import org.activiti.engine.history.HistoricVariableInstance;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
+import java.io.IOException;
 import java.io.Serializable;
 import java.io.Serializable;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
 
 
 /**
 /**
  * @Description: 全局监听
  * @Description: 全局监听
@@ -29,6 +45,34 @@ public class ProcessEventListener implements ActivitiEventListener, Serializable
             case PROCESS_COMPLETED:
             case PROCESS_COMPLETED:
                 // 流程结束
                 // 流程结束
                 log.info("流程结束_PROCESS_COMPLETED:ProcessInstanceId:{},ExecutionId:{},ProcessDefinitionId:{}", event.getProcessInstanceId(), event.getExecutionId(), event.getProcessDefinitionId());
                 log.info("流程结束_PROCESS_COMPLETED:ProcessInstanceId:{},ExecutionId:{},ProcessDefinitionId:{}", event.getProcessInstanceId(), event.getExecutionId(), event.getProcessDefinitionId());
+                HistoryService historyService = SpringContextHolder.getBean(HistoryService.class);
+                SysUserService sysUserService = SpringContextHolder.getBean(SysUserService.class);
+                ExamTaskService examTaskService = SpringContextHolder.getBean(ExamTaskService.class);
+                PrintCommonService printCommonService = SpringContextHolder.getBean(PrintCommonService.class);
+
+                List<HistoricVariableInstance> historicVariableInstanceList = historyService.createHistoricVariableInstanceQuery().processInstanceId(event.getProcessInstanceId()).list();
+                if (Objects.nonNull(historicVariableInstanceList) && historicVariableInstanceList.size() > 0) {
+                    TFFlowLog tfFlowLog = null;
+                    for (HistoricVariableInstance h : historicVariableInstanceList) {
+                        if (Objects.equals(h.getVariableName(), SystemConstant.APPROVE_TF_FLOW_LOG)) {
+                            tfFlowLog = (TFFlowLog) h.getValue();
+                            break;
+                        }
+                    }
+                    if (Objects.nonNull(tfFlowLog) && Objects.nonNull(tfFlowLog.getObjectTable())) {
+                        if (Objects.equals(tfFlowLog.getObjectTable(), TFCustomTypeEnum.ELECTRON_FLOW.getTable())) {//如果是命题任务交卷
+                            ExamTask examTask = examTaskService.getById(tfFlowLog.getObjectId());
+                            Optional.ofNullable(examTask).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("命题任务为空"));
+                            //取命题老师ID
+                            SysUser sysUser = sysUserService.getById(examTask.getUserId());
+                            try {
+                                printCommonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
+                            } catch (IOException e) {
+                                throw ExceptionResultEnum.ERROR.exception("生成pdf失败");
+                            }
+                        }
+                    }
+                }
                 break;
                 break;
 //            case ACTIVITY_COMPENSATE:
 //            case ACTIVITY_COMPENSATE:
 //                // 一个节点将要被补偿。事件包含了将要执行补偿的节点id。
 //                // 一个节点将要被补偿。事件包含了将要执行补偿的节点id。

+ 2 - 10
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java

@@ -277,7 +277,6 @@ public class ActivitiServiceImpl implements ActivitiService {
             TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowId, examTask.getSchoolId());
             TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowId, examTask.getSchoolId());
             tfFlowApprove = Objects.isNull(tfFlowApprove) ? new TFFlowApprove(sysUser.getSchoolId(), sysUser.getOrgId(), flowId, sysUser.getId(), FlowStatusEnum.FINISH, sysUser.getId()) : tfFlowApprove;
             tfFlowApprove = Objects.isNull(tfFlowApprove) ? new TFFlowApprove(sysUser.getSchoolId(), sysUser.getOrgId(), flowId, sysUser.getId(), FlowStatusEnum.FINISH, sysUser.getId()) : tfFlowApprove;
 
 
-            Map<String, Object> objectMap = new HashMap<>();
             TFFlowLog tfFlowLog = null;
             TFFlowLog tfFlowLog = null;
 
 
             TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.findByFlowId(flowId);
             TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.findByFlowId(flowId);
@@ -389,11 +388,9 @@ public class ActivitiServiceImpl implements ActivitiService {
                     nextFlowTaskResult,
                     nextFlowTaskResult,
                     gson,
                     gson,
                     agginessMap,
                     agginessMap,
-                    examTask,
-                    objectMap);
+                    examTask);
             //当前实例的执行到哪个节点
             //当前实例的执行到哪个节点
             taskService.complete(String.valueOf(flowTaskId), map);
             taskService.complete(String.valueOf(flowTaskId), map);
-            return objectMap;
         } catch (Exception e) {
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
             log.error(SystemConstant.LOG_ERROR, e);
             if (e instanceof ApiException) {
             if (e instanceof ApiException) {
@@ -422,7 +419,6 @@ public class ActivitiServiceImpl implements ActivitiService {
      * @param gson
      * @param gson
      * @param agginessMap
      * @param agginessMap
      * @param examTask
      * @param examTask
-     * @param objectMap
      */
      */
     protected void setApproveInfo(TFFlowApprove tfFlowApprove,
     protected void setApproveInfo(TFFlowApprove tfFlowApprove,
                                   TFFlowLog tfFlowLog,
                                   TFFlowLog tfFlowLog,
@@ -435,8 +431,7 @@ public class ActivitiServiceImpl implements ActivitiService {
                                   FlowTaskResult nextFlowTaskResult,
                                   FlowTaskResult nextFlowTaskResult,
                                   Gson gson,
                                   Gson gson,
                                   Map<String, CustomFlowVarDto> agginessMap,
                                   Map<String, CustomFlowVarDto> agginessMap,
-                                  ExamTask examTask,
-                                  Map<String, Object> objectMap) {
+                                  ExamTask examTask) {
         tfFlowApprove.updateInfo(sysUser.getId());
         tfFlowApprove.updateInfo(sysUser.getId());
         if (tfFlowLog.getApproveOperation() == FlowApproveOperationEnum.APPROVE) {
         if (tfFlowLog.getApproveOperation() == FlowApproveOperationEnum.APPROVE) {
             tfFlowApprove.setApproveSetup(nrOfCompletedInstances);
             tfFlowApprove.setApproveSetup(nrOfCompletedInstances);
@@ -489,9 +484,6 @@ public class ActivitiServiceImpl implements ActivitiService {
         tfFlowLogService.save(tfFlowLog);
         tfFlowLogService.save(tfFlowLog);
         examTask.updateInfo(sysUser.getId());
         examTask.updateInfo(sysUser.getId());
         examTaskService.updateById(examTask);
         examTaskService.updateById(examTask);
-        objectMap.putIfAbsent("tfFlowApprove", tfFlowApprove);
-        objectMap.putIfAbsent("examTask", examTask);
-        objectMap.putIfAbsent("sysUser", sysUser);
     }
     }
 
 
     /**
     /**

+ 2 - 30
distributed-print/src/main/java/com/qmth/distributed/print/api/TFCustomFlowController.java

@@ -5,8 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.gson.Gson;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import com.google.gson.reflect.TypeToken;
-import com.qmth.boot.api.annotation.Aac;
-import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.distributed.print.business.bean.flow.CustomFlowDto;
 import com.qmth.distributed.print.business.bean.flow.CustomFlowDto;
@@ -174,32 +172,7 @@ public class TFCustomFlowController {
         map.computeIfAbsent(SystemConstant.APPROVE_OPERATION, v -> flowTaskApproveParam.getApprovePass());
         map.computeIfAbsent(SystemConstant.APPROVE_OPERATION, v -> flowTaskApproveParam.getApprovePass());
         map.computeIfAbsent(SystemConstant.APPROVE_REMARK, v -> flowTaskApproveParam.getRemark());
         map.computeIfAbsent(SystemConstant.APPROVE_REMARK, v -> flowTaskApproveParam.getRemark());
         map.computeIfAbsent(SystemConstant.APPROVE_SETUP, v -> flowTaskApproveParam.getSetup());
         map.computeIfAbsent(SystemConstant.APPROVE_SETUP, v -> flowTaskApproveParam.getSetup());
-//        map.computeIfAbsent(SystemConstant.APPROVE_USER_IDS, v -> flowTaskApproveParam.getApproveUserIds());
-        Map<String, Object> objectMap = activitiService.taskApprove(map);
-//        if (Objects.nonNull(objectMap)) {
-//            TFFlowApprove tfFlowApprove = (TFFlowApprove) objectMap.get("tfFlowApprove");
-//            ExamTask examTask = (ExamTask) objectMap.get("examTask");
-//            boolean presidentApprove = Objects.nonNull(objectMap.get(SystemConstant.APPROVE_PRESIDENT_SYSTEM)) ? (boolean) objectMap.get(SystemConstant.APPROVE_PRESIDENT_SYSTEM) : false;
-//            //审核通过,生成pdf
-//            if (Objects.nonNull(tfFlowApprove) && FlowApproveSetupEnum.FINISH.getSetup() == tfFlowApprove.getSetup()) {
-//                // 取命题老师ID
-//                SysUser sysUser = sysUserService.getById(examTask.getUserId());
-//                try {
-//                    printCommonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
-//                } catch (IOException e) {
-//                    throw ExceptionResultEnum.ERROR.exception("生成pdf失败");
-//                }
-//            } else if (Objects.nonNull(tfFlowApprove) && FlowApproveSetupEnum.THREE_APPROVE.getSetup() == tfFlowApprove.getSetup() && presidentApprove) {//命题老师后台提交
-//                TExamTaskFlow tExamTaskFlow = tExamTaskFlowService.findByFlowLevel(examTask.getId());
-//                Task task = taskService.createTaskQuery().processInstanceId(String.valueOf(tExamTaskFlow.getFlowId())).singleResult();
-//                if (Objects.nonNull(task)) {
-//                    Map<String, Object> mapObject = new HashMap<>();
-//                    mapObject.computeIfAbsent(SystemConstant.FLOW_TASK_ID, v -> task.getId());
-//                    mapObject.computeIfAbsent(SystemConstant.APPROVE_PRESIDENT_SYSTEM, v -> presidentApprove);
-//                    activitiService.taskApprove(mapObject);
-//                }
-//            }
-//
+        activitiService.taskApprove(map);
 //            // 驳回短信(驳回给提交老师)
 //            // 驳回短信(驳回给提交老师)
 //            if (tfFlowApprove.getStatus() == FlowStatusEnum.REJECT
 //            if (tfFlowApprove.getStatus() == FlowStatusEnum.REJECT
 //                    && (tfFlowApprove.getSetup().intValue() == FlowApproveSetupEnum.SUBMIT.getSetup())
 //                    && (tfFlowApprove.getSetup().intValue() == FlowApproveSetupEnum.SUBMIT.getSetup())
@@ -209,8 +182,7 @@ public class TFCustomFlowController {
 //                }.getType());
 //                }.getType());
 //                basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_REJECT);
 //                basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_REJECT);
 //            }
 //            }
-//        }
-        return ResultUtil.ok();
+        return ResultUtil.ok(true);
     }
     }
 
 
     @ApiOperation(value = "流程审批记录列表")
     @ApiOperation(value = "流程审批记录列表")