supeng hai 1 semana
pai
achega
b5f92b5e63

+ 7 - 4
supply-demand-engine-core/src/main/java/com/tzld/piaoquan/sde/integration/ContentDeconstructionClient.java

@@ -4,10 +4,12 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.TypeReference;
 import com.tzld.piaoquan.sde.common.enums.ContentTypeEnum;
 import com.tzld.piaoquan.sde.common.enums.ExceptionEnum;
+import com.tzld.piaoquan.sde.common.enums.deconstruction.DeconstructionTaskStatusEnum;
 import com.tzld.piaoquan.sde.common.enums.deconstruction.SenceTypeEnum;
 import com.tzld.piaoquan.sde.common.exception.BizException;
 import com.tzld.piaoquan.sde.common.exception.HttpServiceException;
 import com.tzld.piaoquan.sde.model.dto.deconstruction.ApiResponse;
+import com.tzld.piaoquan.sde.model.dto.deconstruction.QueryResponseDataDTO;
 import com.tzld.piaoquan.sde.model.dto.deconstruction.SubmitResponseDataDTO;
 import com.tzld.piaoquan.sde.model.dto.longvideoapi.JsonView;
 import com.tzld.piaoquan.sde.model.dto.longvideoapi.WxVideoV2VO;
@@ -19,6 +21,7 @@ import okhttp3.*;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import javax.management.Query;
 import java.io.IOException;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
@@ -145,7 +148,7 @@ public class ContentDeconstructionClient {
      * @param jobId 解构任务ID
      * @return 解构结果
      */
-    public String getDeconstructionTaskResult(String jobId) {
+    public QueryResponseDataDTO getDeconstructionTaskResult(String jobId) {
         String url = String.format(deconstructionTaskQueryUrl, jobId);
         Request request = new Request.Builder()
                 .url(url)
@@ -159,12 +162,12 @@ public class ContentDeconstructionClient {
             }
             String respBody = response.body().string();
             // 5. 反序列化返回值
-            ApiResponse<SubmitResponseDataDTO> apiResponse = JSON.parseObject(respBody, new TypeReference<ApiResponse<SubmitResponseDataDTO>>() {
+            ApiResponse<QueryResponseDataDTO> apiResponse = JSON.parseObject(respBody, new TypeReference<ApiResponse<QueryResponseDataDTO>>() {
             });
-            if (apiResponse.getCode() != 0) {
+            if (apiResponse.getCode() != 0 || apiResponse.getData() == null) {
                 throw new BizException(ExceptionEnum.API_REQUEST_ERROR.getCode(), JSON.toJSONString(apiResponse));
             }
-            return apiResponse.getData().getTaskId();
+            return apiResponse.getData();
         } catch (Exception e) {
             throw new RuntimeException(e);
         }

+ 6 - 0
supply-demand-engine-core/src/main/java/com/tzld/piaoquan/sde/model/dto/deconstruction/QueryResponseDataDTO.java

@@ -5,4 +5,10 @@ import lombok.Data;
 @Data
 public class QueryResponseDataDTO {
     private String taskId;
+    /**
+     * @see com.tzld.piaoquan.sde.common.enums.deconstruction.DeconstructionTaskStatusEnum;
+     */
+    private Integer status;
+    private String result;
+    private String reason;
 }

+ 56 - 14
supply-demand-engine-core/src/main/java/com/tzld/piaoquan/sde/service/impl/ExecutionTaskServiceImpl.java

@@ -6,12 +6,14 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.tzld.piaoquan.sde.common.api.CommonRequest;
 import com.tzld.piaoquan.sde.common.enums.*;
+import com.tzld.piaoquan.sde.common.enums.deconstruction.DeconstructionTaskStatusEnum;
 import com.tzld.piaoquan.sde.common.exception.HttpServiceException;
 import com.tzld.piaoquan.sde.integration.ContentDeconstructionClient;
 import com.tzld.piaoquan.sde.mapper.SdExecutionTaskMapper;
 import com.tzld.piaoquan.sde.mapper.SdExecutionTaskRawResultMapper;
 import com.tzld.piaoquan.sde.mapper.SdExecutionTaskResultItemMapper;
 import com.tzld.piaoquan.sde.mapper.SdWorkflowTaskMapper;
+import com.tzld.piaoquan.sde.model.dto.deconstruction.QueryResponseDataDTO;
 import com.tzld.piaoquan.sde.model.entity.SdExecutionTask;
 import com.tzld.piaoquan.sde.model.entity.SdExecutionTaskRawResult;
 import com.tzld.piaoquan.sde.model.request.ExecutionTaskGetParam;
@@ -145,8 +147,11 @@ public class ExecutionTaskServiceImpl implements ExecutionTaskService {
         for (SdExecutionTask sdExecutionTask : list) {
             try {
                 ExecutionTaskTypeEnum executionTaskTypeEnum = ExecutionTaskTypeEnum.getInstance(sdExecutionTask.getTaskType());
+                if (Objects.isNull(executionTaskTypeEnum)) {
+                    continue;
+                }
                 String jobId = null;
-                switch (Objects.requireNonNull(executionTaskTypeEnum)) {
+                switch (executionTaskTypeEnum) {
                     case DECONSTRUCT:
                         jobId = contentDeconstructionClient.submitDeconstructionTask(sdExecutionTask);
                         break;
@@ -209,23 +214,60 @@ public class ExecutionTaskServiceImpl implements ExecutionTaskService {
         }
         for (SdExecutionTask sdExecutionTask : list) {
             try {
-                String rawResult = contentDeconstructionClient.getDeconstructionTaskResult(sdExecutionTask.getExternalJobId());
-                if (Objects.isNull(rawResult) || rawResult.isEmpty()) {
+                QueryResponseDataDTO queryResponseDataDTO = contentDeconstructionClient.getDeconstructionTaskResult(sdExecutionTask.getExternalJobId());
+                DeconstructionTaskStatusEnum deconstructionTaskStatusEnum = DeconstructionTaskStatusEnum.getInstance(queryResponseDataDTO.getStatus());
+                if (Objects.isNull(deconstructionTaskStatusEnum)) {
+                    continue;
+                }
+                ExecutionTaskStatusEnum executionTaskStatusEnum = null;
+                String rawResult = null;
+                String errorMsg = null;
+                switch (deconstructionTaskStatusEnum) {
+                    case PENDING:
+                        log.info("executionTask is pending, id:{}", sdExecutionTask.getId());
+                        break;
+                    case RUNNING:
+                        executionTaskStatusEnum = ExecutionTaskStatusEnum.RUNNING;
+                        break;
+                    case SUCCESS:
+                        executionTaskStatusEnum = ExecutionTaskStatusEnum.SUCCESS;
+                        rawResult = queryResponseDataDTO.getResult();
+                        break;
+                    case FAILED:
+                        executionTaskStatusEnum = ExecutionTaskStatusEnum.FAILED;
+                        errorMsg = queryResponseDataDTO.getReason();
+                        break;
+                    default:
+                        break;
+                }
+                if (Objects.isNull(executionTaskStatusEnum)) {
                     continue;
                 }
-                SdExecutionTaskRawResult sdExecutionTaskRawResult = new SdExecutionTaskRawResult();
-                sdExecutionTaskRawResult.setExecutionTaskId(sdExecutionTask.getId());
-                sdExecutionTaskRawResult.setRawResult(rawResult);
-                int rows = sdExecutionTaskRawResultMapper.insert(sdExecutionTaskRawResult);
-                log.info("executionTask sync success, id:{} rows = {}", sdExecutionTask.getId(), rows);
-                //TODO解析结果
-//                if (rows > 0) {
-//                    SdExecutionTaskResultItem sdExecutionTaskResultItem = new SdExecutionTaskResultItem();
-//                    sdExecutionTaskResultItem.setExecutionTaskId(sdExecutionTask.getId());
-//                    sdExecutionTaskResultItemMapper.insert(sdExecutionTaskResultItem);
-//                }
+                SdExecutionTask update = new SdExecutionTask();
+                update.setId(sdExecutionTask.getId());
+                update.setTaskStatus(executionTaskStatusEnum.getValue());
+                if (Objects.nonNull(errorMsg)) {
+                    update.setErrorMsg(errorMsg);
+                }
+                int rows = sdExecutionTaskMapper.updateById(update);
+                if (rows > 0 && Objects.equals(executionTaskStatusEnum, ExecutionTaskStatusEnum.SUCCESS)) {
+                    SdExecutionTaskRawResult sdExecutionTaskRawResult = new SdExecutionTaskRawResult();
+                    sdExecutionTaskRawResult.setExecutionTaskId(sdExecutionTask.getId());
+                    sdExecutionTaskRawResult.setRawResult(rawResult);
+                    int insertRows = sdExecutionTaskRawResultMapper.insert(sdExecutionTaskRawResult);
+                    log.info("executionTask result insertRows success, id:{} rows = {}", sdExecutionTask.getId(), insertRows);
+                }
             } catch (Exception e) {
                 log.error("executionTask sync error {}", sdExecutionTask, e);
+                if (e instanceof HttpServiceException) {
+                    continue;
+                }
+                SdExecutionTask update = new SdExecutionTask();
+                update.setId(sdExecutionTask.getId());
+                update.setTaskStatus(ExecutionTaskStatusEnum.FAILED.getValue());
+                update.setErrorMsg(e.getMessage());
+                int rows = sdExecutionTaskMapper.updateById(update);
+                log.error("executionTask failure, id:{} rows = {}", sdExecutionTask.getId(), rows);
             }
         }
         long costMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start);