dengsixing vor 8 Monaten
Ursprung
Commit
37a405c378

+ 23 - 0
src/main/java/com/fdkankan/modeling/service/impl/ReverseE57ServiceImpl.java

@@ -13,6 +13,7 @@ import com.fdkankan.modeling.service.IBuildLogService;
 import com.fdkankan.modeling.service.IReverseE57Service;
 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 lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -123,6 +124,7 @@ public class ReverseE57ServiceImpl implements IReverseE57Service {
         } catch (Exception e) {
             log.error("计算后业务处理出错!", e);
         }finally {
+            this.sendCallResult(message, buildSceneResult);
             buildSceneResult.setDuration(buildLog.getDuration());
             rabbitMqProducer.sendByWorkQueue(queueModelingProcessLog,
                     BuildSceneProcessLogMessage.builder().num(message.getSceneNum()).buildStatus(buildStatus.code()).queueName(queueModelingCall).build());
@@ -130,6 +132,27 @@ public class ReverseE57ServiceImpl implements IReverseE57Service {
 
     }
 
+    /**
+     * 发送计算结果
+     * @param message
+     * @param buildSceneResult
+     */
+    private void sendCallResult(BuildSceneCallMessage message, BuildSceneResultBean buildSceneResult){
+        ModelingBuildStatus buildStatus = buildSceneResult.getBuildStatus();
+        //重复计算不需要发送mq做后置处理
+        if(buildStatus.equals(ModelingBuildStatus.REPEAT)){
+            return;
+        }
+        BuildSceneResultMqMessage buildResult = BuildSceneResultMqMessage.builder()
+                .buildSuccess(buildStatus.equals(ModelingBuildStatus.SUCCESS))
+                .computeTime(buildSceneResult.getDuration())
+                .path(buildSceneResult.getPath())
+                .hostName(SysConstants.hostName)
+                .build();
+        buildResult.setBuildContext(message.getBuildContext());
+        rabbitMqProducer.sendByWorkQueue(buildSceneResult.getResultQueueName(),buildResult);
+    }
+
     private ModelingBuildStatus buildScene(Map<String,Object> buildContext,BuildSceneCallMessage message, BuildSceneResultBean buildSceneResult,BuildLog logRecord) throws Exception{
         //如果mq生产者在消息体中设置了结算结果mq队列名,就发到这个队列,否则就发送到默认队列
         String path = message.getPath();