|
@@ -1,5 +1,8 @@
|
|
|
package com.backendsys.modules.crt.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.convert.Convert;
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
import com.backendsys.exception.CustException;
|
|
|
import com.backendsys.modules.common.utils.Result;
|
|
|
import com.backendsys.modules.crt.dao.CrtDramaProjectStoryboardDao;
|
|
@@ -7,11 +10,14 @@ import com.backendsys.modules.crt.entity.CrtDramaProjectStoryboard;
|
|
|
import com.backendsys.modules.crt.service.CrtGenerateService;
|
|
|
import com.backendsys.modules.sdk.comfyui.entity.CFPromptResponse;
|
|
|
import com.backendsys.modules.sdk.comfyui.service.ComfyUIService;
|
|
|
+import com.backendsys.modules.sdk.comfyui.service.ComfyUISocketService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import reactor.core.publisher.Mono;
|
|
|
|
|
|
+import java.util.LinkedHashMap;
|
|
|
import java.util.Map;
|
|
|
+import java.util.UUID;
|
|
|
|
|
|
@Service
|
|
|
public class CrtGenerateServiceImpl implements CrtGenerateService {
|
|
@@ -19,6 +25,9 @@ public class CrtGenerateServiceImpl implements CrtGenerateService {
|
|
|
@Autowired
|
|
|
private ComfyUIService comfyUIService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ComfyUISocketService comfyUISocketService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private CrtDramaProjectStoryboardDao crtDramaProjectStoryboardDao;
|
|
|
|
|
@@ -30,13 +39,29 @@ public class CrtGenerateServiceImpl implements CrtGenerateService {
|
|
|
CrtDramaProjectStoryboard detail = crtDramaProjectStoryboardDao.selectById(drama_project_storyboard_id);
|
|
|
if (detail == null) throw new CustException("分镜不存在");
|
|
|
|
|
|
+ // -- 前端生成的UUID ---------------------------------------------
|
|
|
+// String client_id = Convert.toStr(UUID.randomUUID());
|
|
|
+ String client_id = crtDramaProjectStoryboard.getClient_id();
|
|
|
+
|
|
|
+ // -- [ComfyUI] 创建 WebSocket 监听连接 ---------------------------
|
|
|
+ comfyUISocketService.connect(client_id, "ws://43.128.1.201:8007/ws").subscribe();
|
|
|
+
|
|
|
+ // -- [ComfyUI] 执行任务 -----------------------------------------
|
|
|
+// String prompt = "{{\"3\":{\"inputs\":{\"seed\":449753344472378,\"steps\":20,\"cfg\":8,\"sampler_name\":\"euler\",\"scheduler\":\"normal\",\"denoise\":1,\"model\":[\"4\",0],\"positive\":[\"6\",0],\"negative\":[\"7\",0],\"latent_image\":[\"5\",0]},\"class_type\":\"KSampler\",\"_meta\":{\"title\":\"K采样器\"}},\"4\":{\"inputs\":{\"ckpt_name\":\"v1-5-pruned-emaonly-fp16.safetensors\"},\"class_type\":\"CheckpointLoaderSimple\",\"_meta\":{\"title\":\"Checkpoint加载器(简易)\"}},\"5\":{\"inputs\":{\"width\":512,\"height\":512,\"batch_size\":1},\"class_type\":\"EmptyLatentImage\",\"_meta\":{\"title\":\"空Latent图像\"}},\"6\":{\"inputs\":{\"text\":\"beautiful scenery nature glass bottle landscape, , purple galaxy bottle,\",\"speak_and_recognation\":{\"__value__\":[false,true]},\"clip\":[\"4\",1]},\"class_type\":\"CLIPTextEncode\",\"_meta\":{\"title\":\"CLIP文本编码\"}},\"7\":{\"inputs\":{\"text\":\"text, watermark\",\"speak_and_recognation\":{\"__value__\":[false,true]},\"clip\":[\"4\",1]},\"class_type\":\"CLIPTextEncode\",\"_meta\":{\"title\":\"CLIP文本编码\"}},\"8\":{\"inputs\":{\"samples\":[\"3\",0],\"vae\":[\"4\",2]},\"class_type\":\"VAEDecode\",\"_meta\":{\"title\":\"VAE解码\"}},\"9\":{\"inputs\":{\"filename_prefix\":\"ComfyUI\",\"images\":[\"8\",0]},\"class_type\":\"SaveImage\",\"_meta\":{\"title\":\"保存图像\"}}}}";
|
|
|
String prompt = "{}";
|
|
|
+ JSONObject prompt_object = JSONUtil.parseObj(prompt);
|
|
|
+
|
|
|
+ System.out.println("prompt_object: " + prompt_object);
|
|
|
|
|
|
- Mono<CFPromptResponse> cfPromptResponse = comfyUIService.prompt(prompt);
|
|
|
+ Mono<CFPromptResponse> cfPromptResponse = comfyUIService.prompt(client_id, prompt_object);
|
|
|
CFPromptResponse response = cfPromptResponse.block();
|
|
|
System.out.println("结果: " + response);
|
|
|
|
|
|
- return Map.of("drama_project_storyboard_id", drama_project_storyboard_id);
|
|
|
+ Map<String, Object> resp = new LinkedHashMap<>();
|
|
|
+ resp.put("drama_project_storyboard_id", drama_project_storyboard_id);
|
|
|
+ resp.put("client_id", client_id);
|
|
|
+ resp.put("response", response);
|
|
|
+ return resp;
|
|
|
}
|
|
|
|
|
|
}
|