chengf
2026-02-11 2b66ac70a801d9b010cc8c77abdd2b09cdf94ae5
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/copywriting/controller/CopywritingAsyncService.java
@@ -2,11 +2,14 @@
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;
@@ -28,17 +31,16 @@
    private CopywritingController copywritingController;
    @Autowired
    private ICopywritingSchemeService copywritingSchemeService;
    @Autowired
    public ICopywritingService copywritingService;
    @Async("copywritingAsyncExecutor")
    public void asyncBatchGenerateCopy(String contractId, List<SemanticWord> semanticWords,
                                       String fileName, String youshang,
                                       String benchmarkUrl,
                                       String auditor, String auditorName) {
    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(contractId);
        task.setContractId(cp.getContractId());
        task.setStatus("PENDING");
        taskService.save(task);
@@ -48,7 +50,7 @@
            taskService.updateById(task);
            // 3. 执行实际的文案生成逻辑(你的核心业务)
            System.out.println("开始处理合同[" + contractId + "]的文案生成");
            System.out.println("开始处理合同[" + cp.getContractId() + "]的文案生成");
            for (SemanticWord semanticWord : semanticWords) {
                Copywriting copywriting = new Copywriting();
                Result title = copywritingController.getResult(semanticWord.getOutWord(),
@@ -61,26 +63,34 @@
                }
                copywriting.setStatus("1");
                copywriting.setWordId(semanticWord.getId());
                CopywritingScheme copywritingScheme = new CopywritingScheme();
                copywritingScheme.setId(cp.getCsId());
                Result text = copywritingController.getResult(
                        fileName,
                        benchmarkUrl,
                        cp.getFileName(),
                        cp.getBenchmarkUrl(),
                        cp.getBenchmarkUrl(),
                        semanticWord.getOutWord(),
                        youshang,
                        cp.getYoushang(),
                        semanticWord.getWord(),
                        "e9ca23d68d884d4ebb19d07889727dae");
                        "e9ca23d68d884d4ebb19d07889727dae",copywritingScheme);
                if (text.isSuccess()) {
                    copywriting.setText(text.getResult().toString());
                } else {
                    throw new IllegalArgumentException("生成失败!"+text.getMessage());
                }
                copywriting.setAuditer(auditor);
                copywriting.setAuditer(cp.getAuditor());
                copywriting.setOutStatus("1");
                copywriting.setCreateBy(auditorName);
                copywriting.setCreateBy(cp.getAuditorName());
                copywriting.setFileName(cp.getFileName());
                copywriting.setUrlName(cp.getBenchmarkUrl());
                copywriting.setSchemeId(cp.getCsId());
                copywritingService.save(copywriting);
            }
            // 假设生成成功,这里可以记录生成结果
            task.setStatus("SUCCESS");
            task.setMessage("文案生成完成,共生成" + semanticWords.size() + "条");
            task.setFinishTime(new Date());
            System.out.println("完成处理合同[" + contractId + "]的文案生成");
            System.out.println("完成处理合同[" + cp.getContractId() + "]的文案生成");
        } catch (Exception e) {
            // 4. 异常时更新为失败状态,记录原因