chengf
2026-01-29 abefef70ee144169527e878513636578742f40bc
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/contract/controller/EmailScheduledTask.java
@@ -44,25 +44,12 @@
    @Autowired
    private IContractService contractService;
    @PostConstruct
    public void init() {
        new Thread(() -> {
            try {
                Thread.sleep(60000); // 延迟一分钟
                sendTimedEmail(); // 执行首次任务
            } catch (Exception e) {
                e.printStackTrace();
            }
        }).start();
    }
    @Scheduled(fixedRate = 1800000)
//    @Scheduled(initialDelay = 6000, fixedRate = 1800000)
    public void sendTimedEmail() {
        QueryWrapper<SemanticWord> semanticWordQueryWrapper = new QueryWrapper<>();
        semanticWordQueryWrapper.in("status", new Object[]{4,5,6,7});
        List<SemanticWord> list = semanticWordService.list();
        List<SemanticWord> list = semanticWordService.list(semanticWordQueryWrapper);
        for (SemanticWord semanticWord : list) {
            Contract byId = contractService.getById(semanticWord.getContractId());
@@ -93,16 +80,24 @@
                                "           WHERE el.contract_name = ?\n" +  // 占位符3:contractId
                                "             AND el.keyword_name LIKE CONCAT('%', ?, '%')\n" +  // 占位符4:semanticWord
                                "       )) AS t1,\n" +
                                "    (SELECT COUNT(DISTINCT el.keyword_name) AS highlight_count\n" +
                                "     FROM d_event_list el\n" +
                                "     INNER JOIN d_keyword_list kl \n" +
                                "         ON el.keyword_name = kl.sBookMarkName\n" +
                                "     WHERE el.contract_name = ?\n" +  // 占位符5:contractId
                                "       AND el.keyword_name LIKE CONCAT('%', ?, '%')\n" +  // 占位符6:semanticWord
                                "       AND kl.is_active = 1\n" +
                                "       AND kl.sType = 'rank'\n" +
                                "       AND kl.ContractId = ?\n" +  // 占位符7:contractId
                                "       AND kl.sDomain <> 'HC_audit') AS t2;";
                                "    (" +
                                "SELECT COUNT(DISTINCT el.keyword_name) AS highlight_count\n" +
                                "FROM d_event_list el\n" +
                                "INNER JOIN d_keyword_list kl \n" +
                                "    ON el.keyword_name = kl.sBookMarkName\n" +
                                "WHERE el.contract_name = ?\n" +
                                "  AND el.keyword_name LIKE CONCAT('%', ? ,'%')\n" +
                                "  AND kl.is_active = 1\n" +
                                "  AND kl.ContractId = ?\n" +
                                "  AND kl.sDomain <> 'HC_audit'\n" +
                                "  AND (el.keyword_name, el.event_time) IN (\n" +
                                "    SELECT keyword_name, MAX(event_time)\n" +
                                "    FROM d_event_list\n" +
                                "    WHERE contract_name = ?\n" +
                                "      AND keyword_name LIKE CONCAT('%', ? ,'%')\n" +
                                "    GROUP BY keyword_name\n" +
                                "  )\n" +
                                "  AND el.type_info = 'appear') as t2";
                        Map<String, Object> semMap = jdbcTemplate.queryForMap(
                                sqlV2,
                                // 按占位符顺序传入参数(注意顺序和?一一对应)
@@ -112,9 +107,13 @@
                                semanticWord.getWord(),
                                contractId,
                                semanticWord.getWord(),
                                contractId
                                contractId,
                                contractId,
                                semanticWord.getWord()
                        );
                        String[] es_receiver = new String[]{"182004222@qq.com","lospace@163.com","2156125618@qq.com","coldspring@163.com"};
                        String[] es_receiver = new String[]{"2156125618@qq.com"};
//                        String[] es_receiver = new String[]{"182004222@qq.com","lospace@163.com","2156125618@qq.com","coldspring@163.com"};
                        BigDecimal acceptindicator = new BigDecimal(semMap.get("ratio").toString());
                        if (semanticWord.getCount() == null || semanticWord.getCount().equals("")){
                            if (semanticWord.getAcceptindicator()/100 <= acceptindicator.doubleValue()){//上词