package org.jeecg.modules.demo.copywriting.controller;
|
|
import cn.hutool.core.date.DateUtil;
|
import org.jeecg.common.api.vo.Result;
|
import org.jeecg.modules.demo.contract.controller.ContractParam;
|
import org.jeecg.modules.demo.contract.entity.SemanticWord;
|
import org.jeecg.modules.demo.copywriting.entity.CopyGenerateTask;
|
import org.jeecg.modules.demo.copywriting.entity.Copywriting;
|
import org.jeecg.modules.demo.copywriting.service.ICopywritingService;
|
import org.jeecg.modules.demo.copywriting.service.impl.CopyGenerateTaskServiceImpl;
|
import org.jeecg.modules.demo.copywritingScheme.entity.CopywritingScheme;
|
import org.jeecg.modules.demo.copywritingScheme.service.ICopywritingSchemeService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.stereotype.Service;
|
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.UUID;
|
|
@Service
|
public class CopywritingAsyncService {
|
|
@Autowired
|
private CopyGenerateTaskServiceImpl taskService; // 新增的任务状态服务
|
// 其他依赖...
|
|
@Autowired
|
private CopywritingController copywritingController;
|
|
@Autowired
|
private ICopywritingSchemeService copywritingSchemeService;
|
@Autowired
|
public ICopywritingService copywritingService;
|
@Async("copywritingAsyncExecutor")
|
public void asyncBatchGenerateCopy(List<SemanticWord> semanticWords, ContractParam cp) {
|
// 1. 生成唯一任务ID,创建待处理任务
|
String taskId = UUID.randomUUID().toString().replace("-", "");
|
CopyGenerateTask task = new CopyGenerateTask();
|
task.setId(taskId);
|
task.setContractId(cp.getContractId());
|
task.setStatus("PENDING");
|
taskService.save(task);
|
|
try {
|
// 2. 更新为处理中
|
task.setStatus("PROCESSING");
|
taskService.updateById(task);
|
|
// 3. 执行实际的文案生成逻辑(你的核心业务)
|
System.out.println("开始处理合同[" + cp.getContractId() + "]的文案生成");
|
for (SemanticWord semanticWord : semanticWords) {
|
Copywriting copywriting = new Copywriting();
|
Result title = copywritingController.getResult(semanticWord.getOutWord(),
|
semanticWord.getWord(),
|
DateUtil.format(new Date(), new SimpleDateFormat("yyyy-MM-dd")),
|
DateUtil.format(new Date(), new SimpleDateFormat("yyyy-MM-dd")),
|
"e9ca23d68d884d4ebb19d07889727dae");
|
if (title.isSuccess()) {
|
copywriting.setTitle(title.getResult().toString());
|
}
|
copywriting.setStatus("1");
|
copywriting.setWordId(semanticWord.getId());
|
CopywritingScheme copywritingScheme = new CopywritingScheme();
|
copywritingScheme.setId(cp.getCsId());
|
Result text = copywritingController.getResult(
|
cp.getFileName(),
|
cp.getBenchmarkUrl(),
|
cp.getBenchmarkUrl(),
|
semanticWord.getOutWord(),
|
cp.getYoushang(),
|
semanticWord.getWord(),
|
"e9ca23d68d884d4ebb19d07889727dae",copywritingScheme);
|
if (text.isSuccess()) {
|
copywriting.setText(text.getResult().toString());
|
} else {
|
throw new IllegalArgumentException("生成失败!"+text.getMessage());
|
}
|
copywriting.setAuditer(cp.getAuditor());
|
copywriting.setOutStatus("1");
|
copywriting.setCreateBy(cp.getAuditorName());
|
copywriting.setFileName(cp.getFileName());
|
copywriting.setUrlName(cp.getBenchmarkUrl());
|
copywriting.setSchemeId(cp.getCsId());
|
copywritingService.save(copywriting);
|
Thread.sleep(10000);
|
}
|
// 假设生成成功,这里可以记录生成结果
|
task.setStatus("SUCCESS");
|
task.setMessage("文案生成完成,共生成" + semanticWords.size() + "条");
|
task.setFinishTime(new Date());
|
System.out.println("完成处理合同[" + cp.getContractId() + "]的文案生成");
|
|
} catch (Exception e) {
|
// 4. 异常时更新为失败状态,记录原因
|
task.setStatus("FAIL");
|
task.setMessage("生成失败:" + e.getMessage());
|
task.setFinishTime(new Date());
|
e.printStackTrace();
|
} finally {
|
// 5. 最终更新任务状态
|
taskService.updateById(task);
|
}
|
}
|
}
|