chengf
2026-02-11 2b66ac70a801d9b010cc8c77abdd2b09cdf94ae5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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);
            }
            // 假设生成成功,这里可以记录生成结果
            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);
        }
    }
}