浏览代码

功能增强: 把控制生成快照的功能移到后台运行

Li Yuan 2 年之前
父节点
当前提交
bdb31ce0bc

+ 33 - 32
ibps-bpmn-root/modules/bpmn-biz/src/main/java/com/lc/ibps/bpmn/listener/ProcEndEventListener.java

@@ -1,31 +1,13 @@
 package com.lc.ibps.bpmn.listener;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.annotation.Resource;
-
-import org.activiti.engine.impl.entity.SubProcessStartOrEndEventModel;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationListener;
-import org.springframework.core.Ordered;
-import org.springframework.stereotype.Service;
-
 import com.lc.ibps.api.base.model.User;
 import com.lc.ibps.base.core.exception.BaseException;
 import com.lc.ibps.base.core.util.BeanUtils;
 import com.lc.ibps.base.core.util.string.StringValidator;
+import com.lc.ibps.base.saas.context.TenantContext;
 import com.lc.ibps.bpmn.api.cmd.ActionCmd;
 import com.lc.ibps.bpmn.api.cmd.TaskFinishCmd;
-import com.lc.ibps.bpmn.api.constant.ActionType;
-import com.lc.ibps.bpmn.api.constant.BpmConstants;
-import com.lc.ibps.bpmn.api.constant.BpmOperTypeEnum;
-import com.lc.ibps.bpmn.api.constant.ProcInstStatus;
-import com.lc.ibps.bpmn.api.constant.TemplateType;
+import com.lc.ibps.bpmn.api.constant.*;
 import com.lc.ibps.bpmn.api.context.BpmnContextUtil;
 import com.lc.ibps.bpmn.api.event.NotifyTaskModel;
 import com.lc.ibps.bpmn.api.event.ProcEndEvent;
@@ -37,21 +19,25 @@ import com.lc.ibps.bpmn.cmd.IbpsTaskFinishCmd;
 import com.lc.ibps.bpmn.domain.BpmApprove;
 import com.lc.ibps.bpmn.domain.BpmInst;
 import com.lc.ibps.bpmn.domain.BpmOperNotify;
-import com.lc.ibps.bpmn.persistence.entity.BpmApprovePo;
-import com.lc.ibps.bpmn.persistence.entity.BpmInstPo;
-import com.lc.ibps.bpmn.persistence.entity.BpmOperLogPo;
-import com.lc.ibps.bpmn.persistence.entity.BpmOperNotifyPo;
-import com.lc.ibps.bpmn.persistence.entity.BpmTaskSignPo;
-import com.lc.ibps.bpmn.repository.BpmApproveRepository;
-import com.lc.ibps.bpmn.repository.BpmInstHisRepository;
-import com.lc.ibps.bpmn.repository.BpmInstRepository;
-import com.lc.ibps.bpmn.repository.BpmOperNotifyRepository;
-import com.lc.ibps.bpmn.repository.BpmTaskSignRepository;
+import com.lc.ibps.bpmn.persistence.entity.*;
+import com.lc.ibps.bpmn.repository.*;
 import com.lc.ibps.bpmn.utils.BpmUtil;
 import com.lc.ibps.bpmn.utils.NotifyUtil;
 import com.lc.ibps.cloud.entity.APIResult;
+import com.lc.ibps.cloud.message.util.MessageQueueProductorUtil;
+import com.lc.ibps.cloud.mq.core.constants.QueueConstants;
+import com.lc.ibps.cloud.mq.core.model.DefaultMessage;
 import com.lc.ibps.org.api.IPartyUserService;
 import com.lc.ibps.org.party.persistence.entity.PartyUserPo;
+import org.activiti.engine.impl.entity.SubProcessStartOrEndEventModel;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationListener;
+import org.springframework.core.Ordered;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.*;
 
 
 /**
@@ -139,7 +125,7 @@ public class ProcEndEventListener implements ApplicationListener<ProcEndEvent>,O
 	/**
 	 * 
 	 *更新流程实例状态。
-	 * @param bpmnInstId 
+	 * @param execution
 	 * void
 	 */
 	private BpmInstPo updProcessInstance(BpmDelegateExecution execution){
@@ -178,10 +164,25 @@ public class ProcEndEventListener implements ApplicationListener<ProcEndEvent>,O
 		BpmInst bpmInstDomain = bpmInstRepository.newInstance();
 		bpmInstDomain.createHistory(instId);
 		bpmInstDomain.delete(instId);
-		
+		MessageQueueProductorUtil.send(buildSnapshotMessage(instId));
 		return instance;
 	}
 
+	private DefaultMessage buildSnapshotMessage(String instId){
+		DefaultMessage<String> message = new DefaultMessage<String>();
+
+		message.setTenantId(TenantContext.getCurrentTenantId());
+
+		message.setRouting(QueueConstants.Message.ROUTING_KEY_MESSAGE_SNAPSHOT);
+		message.setExchange(QueueConstants.Message.EXCHANGE_MESSAGE);
+		message.setQueue(QueueConstants.Message.QUEUE_NAME_SNAPSHOT);
+
+		message.setData(instId);
+
+
+		return message;
+	}
+
 	/**
 	 * 流程结束通知
 	 *

+ 3 - 0
ibps-message-producer-root/modules/message-core/src/main/java/com/lc/ibps/cloud/mq/core/constants/QueueConstants.java

@@ -16,6 +16,9 @@ public interface QueueConstants {
 		public static final String EXCHANGE_MESSAGE = "ibps.exchange.message";
 		public static final String ROUTING_KEY_MESSAGE = "ibps.routing.key.message";
 		public static final String QUEUE_NAME = "ibps.queue.message";
+
+		public static final String ROUTING_KEY_MESSAGE_SNAPSHOT = "ibps.routing.key.message.snapshot";
+		public static final String QUEUE_NAME_SNAPSHOT = "ibps.queue.message.snapshot";
 	}
 	
 	public static class Command {

+ 8 - 1
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/config/InitialConfigure.java

@@ -1,10 +1,17 @@
 package com.lc.ibps.config;
 
+import com.lc.ibps.cloud.mq.consumer.api.consumer.IQueueConsumer;
+import com.lc.ibps.cloud.mq.core.model.DefaultMessage;
+import com.lc.ibps.mq.consumer.rabbit.RabbitSnapshotMessageQueueConsumer;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
 import com.lc.ibps.cloud.config.AbstractInitialConfigure;
 
 @Configuration("platformInitialConfigure")
 public class InitialConfigure extends AbstractInitialConfigure {
-
+	@Bean
+	public IQueueConsumer<DefaultMessage<String>> rabbitSnapshotMessageQueueConsumer() {
+		return new RabbitSnapshotMessageQueueConsumer<DefaultMessage<String>>();
+	}
 }

+ 51 - 0
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/mq/consumer/rabbit/RabbitSnapshotMessageQueueConsumer.java

@@ -0,0 +1,51 @@
+package com.lc.ibps.mq.consumer.rabbit;
+
+import com.lc.ibps.cloud.file.provider.UploadProvider;
+import com.lc.ibps.cloud.mq.consumer.api.consumer.IQueueConsumer;
+import com.lc.ibps.cloud.mq.core.constants.QueueConstants;
+import com.lc.ibps.cloud.mq.core.model.Message;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.amqp.rabbit.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+
+@RabbitListener(bindings = {
+        @QueueBinding(
+                exchange = @Exchange(value = QueueConstants.Message.EXCHANGE_MESSAGE ),
+                key = QueueConstants.Message.ROUTING_KEY_MESSAGE_SNAPSHOT,
+                value = @Queue(value = QueueConstants.Message.QUEUE_NAME_SNAPSHOT)
+        )
+})
+public class RabbitSnapshotMessageQueueConsumer <M extends Message<String>> implements IQueueConsumer<M> {
+
+    private static Logger LOGGER = LoggerFactory.getLogger(RabbitSnapshotMessageQueueConsumer.class);
+    @Autowired
+    private UploadProvider uploadFile;
+
+    @RabbitHandler
+    @Override
+    public void popup(M message) {
+        LOGGER.warn(message.toString());
+        String instId = message.getData();
+
+        /*
+        Step 1: fetch below sql by instId. if record returned, goto step 2,otherwise goto step 3.
+
+        select ti_jiao_kuai_zhao from t_lcidglbdbb
+        where tablekey_ = 'tsclb'  and gui_dang_lei_xing = 'process'
+        and  liu_cheng_xuan_ze = (select PROC_DEF_KEY_ from ibps_bpm_inst_his where id_ = '1166693885385113602' limit 1)
+
+        Step 2: check ti_jiao_kuai_zhao, if the value is yes, goto step 2.1, otherwise goto step 2.2
+        Step 2.1: call runQianUpload method to get generate pdf file.
+            //https://www.szjyxt.com/ibps/platform/v3/file/upload/runQianUpload?url=https:%2F%2Fwww.szjyxt.com%2Fdemo%2FreportServlet%3Faction%3D6%26file%3D%25E9%2587%2591%25E9%2580%259A%25E5%258C%25BB%25E5%25AD%25A6%25E5%25AE%259E%25E9%25AA%258C%25E5%25AE%25A4%25E7%25AE%25A1%25E7%2590%2586%25E7%25B3%25BB%25E7%25BB%259F%252F%25E6%258A%2595%25E8%25AF%2589%252F%25E6%258A%2595%25E8%25AF%2589%25E5%25A4%2584%25E7%2590%2586%25E8%25A1%25A8.rpx%26print%3D1%26srcType%3Dfile%26paramString%3Did_%253D1166693885385113600%26org_%3D1136828146851512320&name=%E6%8A%95%E8%AF%89%E5%A4%84%E7%90%86%E8%A1%A8202310251105&type=pdf
+            //uploadFile.runQianUpload()
+            and then update table t_tsclb with field: "shi_fou_guo_shen"="已完成"  "kuai_zhao_": "1166694051567632384"
+        Step 2.2: update table t_tsclb with field: "shi_fou_guo_shen"="已完成"
+
+        Step 3: waiting 30s and try it again.
+
+         */
+
+    }
+
+}