Bladeren bron

Merge branch 'projects/gh-20230213' into projects/gh-20221130

dsx 2 jaren geleden
bovenliggende
commit
950540cf36
1 gewijzigde bestanden met toevoegingen van 27 en 0 verwijderingen
  1. 27 0
      src/main/java/com/fdkankan/modeling/receiver/RabbitMqListener.java

+ 27 - 0
src/main/java/com/fdkankan/modeling/receiver/RabbitMqListener.java

@@ -12,12 +12,14 @@ import com.fdkankan.modeling.exception.BuildException;
 import com.fdkankan.modeling.handler.LaserSceneObjGenerateHandler;
 import com.fdkankan.modeling.service.IBuildLogService;
 import com.fdkankan.rabbitmq.bean.BuildSceneCallMessage;
+import com.fdkankan.rabbitmq.bean.BuildSceneProcessLogMessage;
 import com.fdkankan.rabbitmq.bean.BuildSceneResultMqMessage;
 import com.fdkankan.rabbitmq.util.RabbitMqProducer;
 import com.fdkankan.redis.util.RedisLockUtil;
 import com.fdkankan.redis.util.RedisUtil;
 import com.rabbitmq.client.Channel;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.time.StopWatch;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.annotation.Queue;
@@ -53,6 +55,8 @@ public class RabbitMqListener {
     private String queueModelingCall;
     @Value("${queue.modeling.modeling-post}")
     private String queueModelingPost;
+    @Value("${queue.modeling.modeling-process-log}")
+    private String queueModelingProcessLog;
 
     @Autowired
     private RedisUtil redisUtil;
@@ -122,6 +126,12 @@ public class RabbitMqListener {
         //开始计时
         StopWatch watch = new StopWatch();
         watch.start();
+
+        String num = message.getSceneNum();
+
+        //发送记录计算状态为计算中
+        this.sendCallBuildProcessLog(message, ModelingBuildStatus.CALCULATING);
+
         final BuildSceneResultBean buildSceneResult = new BuildSceneResultBean();
         String resultQueueName = StrUtil.isNotBlank(message.getResultReceiverMqName()) ?
                 message.getResultReceiverMqName() : queueModelingPost;
@@ -141,6 +151,7 @@ public class RabbitMqListener {
                 }
             });
             status = future.get(SysConstants.modelTimeOut, TimeUnit.HOURS);
+
             //结束计时
             watch.stop();
             buildLog.setDuration(watch.getTime(TimeUnit.SECONDS));
@@ -262,9 +273,20 @@ public class RabbitMqListener {
             //发送计算结果mq
             buildSceneResult.setDuration(buildLog.getDuration());
             this.sendCallResult(message, buildSceneResult);
+            this.sendCallBuildProcessLog(message, buildStatus);
         }
     }
 
+    /**
+     * 发送计算流程状态日志mq
+     * @param message
+     * @param buildStatus
+     */
+    private void sendCallBuildProcessLog(BuildSceneCallMessage message, ModelingBuildStatus buildStatus){
+        rabbitMqProducer.sendByWorkQueue(queueModelingProcessLog,
+                BuildSceneProcessLogMessage.builder().num(message.getSceneNum()).buildStatus(buildStatus.code()).build());
+    }
+
     private void preBuild(Map<String,Object> buildContext,BuildSceneCallMessage message, BuildLog buildLog) throws BuildException {
 
         // 初始化日志参数
@@ -278,6 +300,11 @@ public class RabbitMqListener {
         buildLog.setStatus(0);
         // 设置缓存锁
         String key = SysConstants.SCENE_BUILDING + buildLog.getSceneNum();
+        // 如果是强制重新计算,则删除key。
+        if (StringUtils.equals(message.getRebuild(), "1")) {
+            redisUtil.del(key);
+        }
+
         // 获取缓存锁,防止重复消费
         Long building = redisUtil.incr(key, 1);
         buildLogService.save(buildLog);