Commit 3d2b0decd9fd1222f82fd18caf4a0de511f77408

Authored by cherishsince
1 parent f20c27a7

【解决todo】增加 finishTime 完成时间

yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/vo/AiImageRespVO.java
@@ -51,7 +51,12 @@ public class AiImageRespVO { @@ -51,7 +51,12 @@ public class AiImageRespVO {
51 @Schema(description = "mj buttons 按钮") 51 @Schema(description = "mj buttons 按钮")
52 private List<MidjourneyApi.Button> buttons; 52 private List<MidjourneyApi.Button> buttons;
53 53
  54 + @Schema(description = "完成时间")
  55 + private LocalDateTime finishTime;
  56 +
54 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) 57 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
55 private LocalDateTime createTime; 58 private LocalDateTime createTime;
56 59
  60 +
  61 +
57 } 62 }
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/image/AiImageDO.java
@@ -16,6 +16,7 @@ import lombok.Data; @@ -16,6 +16,7 @@ import lombok.Data;
16 import org.springframework.ai.openai.OpenAiImageOptions; 16 import org.springframework.ai.openai.OpenAiImageOptions;
17 import org.springframework.ai.stabilityai.api.StabilityAiImageOptions; 17 import org.springframework.ai.stabilityai.api.StabilityAiImageOptions;
18 18
  19 +import java.time.LocalDateTime;
19 import java.util.List; 20 import java.util.List;
20 import java.util.Map; 21 import java.util.Map;
21 22
@@ -111,6 +112,11 @@ public class AiImageDO extends BaseDO { @@ -111,6 +112,11 @@ public class AiImageDO extends BaseDO {
111 */ 112 */
112 private String taskId; 113 private String taskId;
113 114
  115 + /**
  116 + * 完成时间
  117 + */
  118 + private LocalDateTime finishTime;
  119 +
114 public static class ButtonTypeHandler extends AbstractJsonTypeHandler<Object> { 120 public static class ButtonTypeHandler extends AbstractJsonTypeHandler<Object> {
115 121
116 @Override 122 @Override
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageServiceImpl.java
@@ -35,6 +35,7 @@ import org.springframework.scheduling.annotation.Async; @@ -35,6 +35,7 @@ import org.springframework.scheduling.annotation.Async;
35 import org.springframework.stereotype.Service; 35 import org.springframework.stereotype.Service;
36 import org.springframework.transaction.annotation.Transactional; 36 import org.springframework.transaction.annotation.Transactional;
37 37
  38 +import java.time.LocalDateTime;
38 import java.util.Collections; 39 import java.util.Collections;
39 import java.util.List; 40 import java.util.List;
40 import java.util.Map; 41 import java.util.Map;
@@ -106,11 +107,12 @@ public class AiImageServiceImpl implements AiImageService { @@ -106,11 +107,12 @@ public class AiImageServiceImpl implements AiImageService {
106 107
107 // 3. 更新数据库 108 // 3. 更新数据库
108 imageMapper.updateById(new AiImageDO().setId(image.getId()).setStatus(AiImageStatusEnum.SUCCESS.getStatus()) 109 imageMapper.updateById(new AiImageDO().setId(image.getId()).setStatus(AiImageStatusEnum.SUCCESS.getStatus())
109 - .setPicUrl(filePath)); 110 + .setPicUrl(filePath).setFinishTime(LocalDateTime.now()));
110 } catch (Exception ex) { 111 } catch (Exception ex) {
111 log.error("[doDall][image({}) 生成异常]", image, ex); 112 log.error("[doDall][image({}) 生成异常]", image, ex);
112 imageMapper.updateById(new AiImageDO().setId(image.getId()) 113 imageMapper.updateById(new AiImageDO().setId(image.getId())
113 - .setStatus(AiImageStatusEnum.FAIL.getStatus()).setErrorMessage(ex.getMessage())); 114 + .setStatus(AiImageStatusEnum.FAIL.getStatus())
  115 + .setErrorMessage(ex.getMessage()).setFinishTime(LocalDateTime.now()));
114 } 116 }
115 } 117 }
116 118
@@ -254,12 +256,15 @@ public class AiImageServiceImpl implements AiImageService { @@ -254,12 +256,15 @@ public class AiImageServiceImpl implements AiImageService {
254 private void updateMidjourneyStatus(AiImageDO image, MidjourneyApi.Notify notify) { 256 private void updateMidjourneyStatus(AiImageDO image, MidjourneyApi.Notify notify) {
255 // 1. 转换状态 257 // 1. 转换状态
256 Integer status = null; 258 Integer status = null;
  259 + LocalDateTime finishTime = null;
257 if (StrUtil.isNotBlank(notify.status())) { 260 if (StrUtil.isNotBlank(notify.status())) {
258 MidjourneyApi.TaskStatusEnum taskStatusEnum = MidjourneyApi.TaskStatusEnum.valueOf(notify.status()); 261 MidjourneyApi.TaskStatusEnum taskStatusEnum = MidjourneyApi.TaskStatusEnum.valueOf(notify.status());
259 if (MidjourneyApi.TaskStatusEnum.SUCCESS == taskStatusEnum) { 262 if (MidjourneyApi.TaskStatusEnum.SUCCESS == taskStatusEnum) {
260 status = AiImageStatusEnum.SUCCESS.getStatus(); 263 status = AiImageStatusEnum.SUCCESS.getStatus();
  264 + finishTime = LocalDateTime.now();
261 } else if (MidjourneyApi.TaskStatusEnum.FAILURE == taskStatusEnum) { 265 } else if (MidjourneyApi.TaskStatusEnum.FAILURE == taskStatusEnum) {
262 status = AiImageStatusEnum.FAIL.getStatus(); 266 status = AiImageStatusEnum.FAIL.getStatus();
  267 + finishTime = LocalDateTime.now();
263 } 268 }
264 } 269 }
265 270
@@ -276,7 +281,8 @@ public class AiImageServiceImpl implements AiImageService { @@ -276,7 +281,8 @@ public class AiImageServiceImpl implements AiImageService {
276 281
277 // 3. 更新 image 状态 282 // 3. 更新 image 状态
278 imageMapper.updateById(new AiImageDO().setId(image.getId()).setStatus(status) 283 imageMapper.updateById(new AiImageDO().setId(image.getId()).setStatus(status)
279 - .setPicUrl(picUrl).setButtons(notify.buttons()).setErrorMessage(notify.failReason())); 284 + .setPicUrl(picUrl).setButtons(notify.buttons()).setErrorMessage(notify.failReason())
  285 + .setFinishTime(finishTime));
280 } 286 }
281 287
282 @Override 288 @Override