Browse Source

新增标准流程消息体

wangliang 2 years ago
parent
commit
a84475c291

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/flow/dto/StandardFlowDoneMsg.java → distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/flow/dto/DoneTaskDto.java

@@ -13,6 +13,6 @@ import java.io.Serializable;
  * @Date: 2023/6/14
  */
 @JsonInclude(JsonInclude.Include.NON_NULL)
-public class StandardFlowDoneMsg extends TFFlowViewLogResult implements Serializable {
+public class DoneTaskDto extends TFFlowViewLogResult implements Serializable {
 
 }

+ 47 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/flow/dto/ToDoTaskDto.java

@@ -0,0 +1,47 @@
+package com.qmth.distributed.print.business.bean.flow.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description: 流程消息dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2023/6/14
+ */
+public class ToDoTaskDto implements Serializable {
+
+    @ApiModelProperty(value = "流程信息")
+    StandardFlowData flowData;
+
+    @ApiModelProperty(value = "待办消息")
+    List<StandardFlowWorkMsg> todoTaskList;
+
+    public ToDoTaskDto() {
+
+    }
+
+    public ToDoTaskDto(StandardFlowData flowData, List<StandardFlowWorkMsg> todoTaskList) {
+        this.flowData = flowData;
+        this.todoTaskList = todoTaskList;
+    }
+
+    public StandardFlowData getFlowData() {
+        return flowData;
+    }
+
+    public void setFlowData(StandardFlowData flowData) {
+        this.flowData = flowData;
+    }
+
+    public List<StandardFlowWorkMsg> getTodoTaskList() {
+        return todoTaskList;
+    }
+
+    public void setTodoTaskList(List<StandardFlowWorkMsg> todoTaskList) {
+        this.todoTaskList = todoTaskList;
+    }
+}

+ 2 - 2
distributed-print-business/src/main/resources/db/install/teachcloud_db.sql

@@ -2858,8 +2858,8 @@ INSERT INTO `sys_config` VALUES (10, NULL, NULL, 'attachment.type', '附件类
 INSERT INTO `sys_config` VALUES (11, NULL, NULL, 'attachment.length', '附件名称长度', '100', NULL, 1, 1, 1, NULL, NULL, NULL);
 INSERT INTO `sys_config` VALUES (12, NULL, NULL, 'attachment.size', '附件大小 ', '200', NULL, 1, 1, 1, NULL, NULL, NULL);
 INSERT INTO `sys_config` VALUES (13, NULL, NULL, 'auto.create.pdf.reset.max.count', '自动重试生成pdf失败最大次数', '5', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (14, NULL, NULL, 'thread.pool.core.size', '自定义线程池大小', '1', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (15, NULL, NULL, 'custom.thread.pool.core.size', '是否自定义线程池大小', 'false', NULL, 1, 1, 1, NULL, NULL, NULL);
+INSERT INTO `sys_config` VALUES (14, NULL, NULL, 'thread.pool.core.size', '自定义线程池大小', '500', NULL, 1, 1, 1, NULL, NULL, NULL);
+INSERT INTO `sys_config` VALUES (15, NULL, NULL, 'custom.thread.pool.core.size', '是否自定义线程池大小', 'true', NULL, 1, 1, 1, NULL, NULL, NULL);
 INSERT INTO `sys_config` VALUES (16, NULL, NULL, 'session.active', 'session会话时长', '4h', NULL, 1, 1, 1, NULL, NULL, NULL);
 INSERT INTO `sys_config` VALUES (18, NULL, NULL, 'sms.normal.code', '万能短信验证码', 'qmth', NULL, 1, 1, 1, NULL, NULL, NULL);
 INSERT INTO `sys_config` VALUES (19, NULL, NULL, 'code.expired.time', '短信验证码有效时间', '2', NULL, 1, 1, 1, NULL, NULL, NULL);

+ 4 - 1
distributed-print-business/src/main/resources/db/log/脚本-wangl.sql

@@ -61,4 +61,7 @@ ALTER TABLE sys_user MODIFY COLUMN mobile_number varchar(30) NULL COMMENT '手
 -----------------------3.2.5 end----------------------
 
 -----------------------3.2.6 start 需求 2023-06-13----------------------
-ALTER TABLE t_f_flow_log ADD task_id BIGINT NULL COMMENT '流程节点id';
+ALTER TABLE t_f_flow_log ADD task_id BIGINT NULL COMMENT '流程节点id';
+
+UPDATE sys_config SET config_value='500' WHERE config_key='thread.pool.core.size';
+UPDATE sys_config SET config_value='true' WHERE config_key='custom.thread.pool.core.size';

+ 3 - 0
distributed-print-business/src/main/resources/db/upgrade/3.2.6.sql

@@ -1,5 +1,8 @@
 USE teachcloud_db;
 
+UPDATE sys_config SET config_value='500' WHERE config_key='thread.pool.core.size';
+UPDATE sys_config SET config_value='true' WHERE config_key='custom.thread.pool.core.size';
+
 INSERT INTO `sys_privilege` VALUES (875, '我教课程选择', 'MyTeachCourse', 'BUTTON', 40, 10, 'AUTH', '759', 1, 0, 1);
 INSERT INTO `sys_privilege` VALUES (876, '学生库选择', 'StudentLibrary', 'BUTTON', 40, 11, 'AUTH', '759', 1, 0, 1);
 INSERT INTO `sys_privilege` VALUES (877, '选择学生(学生库选择)', 'SelectStudent', 'BUTTON', 40, 12, 'AUTH', NULL, 1, 0, 1);

+ 6 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -45,6 +45,12 @@ import java.util.stream.Collectors;
 public class SystemConstant {
     private final static Logger log = LoggerFactory.getLogger(SystemConstant.class);
 
+    /**
+     * mq中台
+     */
+    public static final String GDPU_TODOTASK_URL = "/api/open/mq/gdpu/todotask";
+    public static final String GDPU_DONETASK_URL = "/api/open/mq/gdpu/donetask";
+
     public static final String INIT_PASSWORD = "12345678";
     public static final String OLD_INIT_PASSWORD = "123456";
 

+ 33 - 10
teachcloud-task/src/main/java/com/qmth/teachcloud/task/config/RedisMessageListener.java

@@ -4,23 +4,25 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.google.gson.Gson;
 import com.qmth.boot.redis.uid.RedisMachineService;
-import com.qmth.distributed.print.business.bean.flow.dto.FlowMsgDto;
-import com.qmth.distributed.print.business.bean.flow.dto.HandleMessageDto;
-import com.qmth.distributed.print.business.bean.flow.dto.StandardFlowData;
-import com.qmth.distributed.print.business.bean.flow.dto.StandardFlowDoneMsg;
+import com.qmth.boot.tools.signature.SignatureEntity;
+import com.qmth.boot.tools.signature.SignatureType;
+import com.qmth.distributed.print.business.bean.flow.dto.*;
 import com.qmth.distributed.print.business.bean.result.TFFlowLogResult;
 import com.qmth.distributed.print.business.service.ActivitiService;
 import com.qmth.distributed.print.business.service.TFFlowLogService;
 import com.qmth.distributed.print.business.templete.execute.AsyncCreatePdfTempleteService;
 import com.qmth.teachcloud.common.bean.dto.MqDto;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.TBTask;
 import com.qmth.teachcloud.common.entity.TMMqMessage;
 import com.qmth.teachcloud.common.enums.FlowApproveOperationEnum;
 import com.qmth.teachcloud.common.enums.MqTagEnum;
+import com.qmth.teachcloud.common.service.CommonCacheService;
 import com.qmth.teachcloud.common.service.TMMqMessageService;
 import com.qmth.teachcloud.common.util.GsonUtil;
+import com.qmth.teachcloud.common.util.HttpUtil;
 import com.qmth.teachcloud.common.util.JacksonUtil;
 import com.qmth.teachcloud.common.util.RedisUtil;
 import org.apache.commons.text.StringEscapeUtils;
@@ -65,6 +67,9 @@ public class RedisMessageListener implements MessageListener {
     @Resource
     TFFlowLogService tfFlowLogService;
 
+    @Resource
+    CommonCacheService commonCacheService;
+
     @Override
     public void onMessage(Message message, byte[] bytes) {
         if (Objects.nonNull(redisUtil.get(SystemConstant.CURRENT_TASK_MACHINE_ID))) {
@@ -114,8 +119,18 @@ public class RedisMessageListener implements MessageListener {
                                 FlowMsgDto flowMsgDto = activitiService.getFlowMsgData(schoolId);
                                 StandardFlowData standardFlowData = activitiService.getFlowInfo(Long.parseLong(mqDto.getObjId()));
                                 HandleMessageDto handleMessageDto = activitiService.handleMessage(schoolId, Long.parseLong(mqDto.getObjId()), flowApproveOperationEnum);
-                                log.info("flowMq standardFlowData:{}", JacksonUtil.parseJson(standardFlowData));
-                                log.info("flowMq handleMessageDto:{}", JacksonUtil.parseJson(handleMessageDto));
+                                if (Objects.nonNull(handleMessageDto) && !CollectionUtils.isEmpty(handleMessageDto.getStandardFlowWorkMsgList())) {
+                                    ToDoTaskDto toDoTaskDto = new ToDoTaskDto(standardFlowData, handleMessageDto.getStandardFlowWorkMsgList());
+                                    log.info("flowMq toDoTaskDto:{}", JacksonUtil.parseJson(toDoTaskDto));
+
+                                    BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
+                                    String hostUrl = SystemConstant.getHost(flowMsgDto.getMqHostUrl(), basicSchool.getCode());
+                                    String[] strs = hostUrl.split("\\?");
+                                    Long timestamp = System.currentTimeMillis();
+                                    String signature = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, SystemConstant.GDPU_TODOTASK_URL, timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
+                                    String callResult = HttpUtil.postJson(strs[0] + SystemConstant.GDPU_TODOTASK_URL, JacksonUtil.parseJson(toDoTaskDto), signature, timestamp);
+                                    log.info("flowMq toDoTaskDto callResult:{}", JacksonUtil.parseJson(callResult));
+                                }
                             } else if (Objects.equals(topic, MqTagEnum.FLOW_MQ_DONE.getCode())) {
                                 log.info("创建flowMqDone消息进来了");
                                 Map<String, Object> map = (Map<String, Object>) mqDto.getBody();
@@ -125,10 +140,18 @@ public class RedisMessageListener implements MessageListener {
                                 FlowMsgDto flowMsgDto = activitiService.getFlowMsgData(schoolId);
                                 List<TFFlowLogResult> tfFlowLogResultList = tfFlowLogService.findByFlowIdAndTaskId(flowId, taskId);
                                 if (!CollectionUtils.isEmpty(tfFlowLogResultList)) {
-                                    StandardFlowDoneMsg standardFlowDoneMsg = GsonUtil.fromJson(GsonUtil.toJson(tfFlowLogResultList.get(tfFlowLogResultList.size() - 1)), StandardFlowDoneMsg.class);
-                                    standardFlowDoneMsg.setMessageType(flowMsgDto.getFlowMsgType());
-                                    standardFlowDoneMsg.setFlowOperation(standardFlowDoneMsg.getApproveOperation());
-                                    log.info("flowMq standardFlowDoneMsg:{}", JacksonUtil.parseJson(standardFlowDoneMsg));
+                                    DoneTaskDto doneTaskDto = GsonUtil.fromJson(GsonUtil.toJson(tfFlowLogResultList.get(tfFlowLogResultList.size() - 1)), DoneTaskDto.class);
+                                    doneTaskDto.setMessageType(flowMsgDto.getFlowMsgType());
+                                    doneTaskDto.setFlowOperation(doneTaskDto.getApproveOperation());
+                                    log.info("flowMq doneTaskDto:{}", JacksonUtil.parseJson(doneTaskDto));
+
+                                    BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
+                                    String hostUrl = SystemConstant.getHost(flowMsgDto.getMqHostUrl(), basicSchool.getCode());
+                                    String[] strs = hostUrl.split("\\?");
+                                    Long timestamp = System.currentTimeMillis();
+                                    String signature = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, SystemConstant.GDPU_DONETASK_URL, timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
+                                    String callResult = HttpUtil.postJson(strs[0] + SystemConstant.GDPU_DONETASK_URL, JacksonUtil.parseJson(doneTaskDto), signature, timestamp);
+                                    log.info("flowMq doneTask callResult:{}", JacksonUtil.parseJson(callResult));
                                 }
                             }
                             redisUtil.set(SystemConstant.CURRENT_TASK_MACHINE_ID, redisMachineService.getMachineId());