From abefef70ee144169527e878513636578742f40bc Mon Sep 17 00:00:00 2001
From: chengf <cgf12138@163.com>
Date: 星期四, 29 一月 2026 09:34:51 +0800
Subject: [PATCH] 上词掉词逻辑更新-cgf
---
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/contract/controller/EmailScheduledTask.java | 149 ++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 120 insertions(+), 29 deletions(-)
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/contract/controller/EmailScheduledTask.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/contract/controller/EmailScheduledTask.java
index 5ecf7b2..b7e536b 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/contract/controller/EmailScheduledTask.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/contract/controller/EmailScheduledTask.java
@@ -1,5 +1,6 @@
package org.jeecg.modules.demo.contract.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.PostConstruct;
import lombok.extern.slf4j.Slf4j;
@@ -17,6 +18,7 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@@ -42,23 +44,12 @@
@Autowired
private IContractService contractService;
-// @PostConstruct
- public void init() {
- new Thread(() -> {
- try {
- Thread.sleep(60000); // 寤惰繜涓�鍒嗛挓
- sendTimedEmail(); // 鎵ц棣栨浠诲姟
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }).start();
- }
-
-
-// @Scheduled(fixedRate = 1800000)
+// @Scheduled(initialDelay = 6000, fixedRate = 1800000)
public void sendTimedEmail() {
- List<SemanticWord> list = semanticWordService.list();
+ QueryWrapper<SemanticWord> semanticWordQueryWrapper = new QueryWrapper<>();
+ semanticWordQueryWrapper.in("status", new Object[]{4,5,6,7});
+ List<SemanticWord> list = semanticWordService.list(semanticWordQueryWrapper);
for (SemanticWord semanticWord : list) {
Contract byId = contractService.getById(semanticWord.getContractId());
@@ -66,29 +57,118 @@
return;
} else {
String contractId = byId.getContractCode();
- String sql = "select count(1) from d_event_list where contract_name = '" + contractId + "' and (keyword_name like concat('%','" + semanticWord.getWord() + "','%') or target_name like concat('%','" + semanticWord.getOutWord() + "','%'))";
+ String sql = "select count(1) from d_event_list where contract_name = '" + contractId + "' and (keyword_name like concat('%','" + semanticWord.getWord() + "','%'))";
Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap(sql);
if (stringObjectMap != null) {
if (stringObjectMap.get("count(1)") != null && !stringObjectMap.get("count(1)").toString().equals("0")) {
- if (semanticWord.getCount() == null || !semanticWord.getCount().equals(stringObjectMap.get("count(1)").toString())) {
- semanticWord.setCount(stringObjectMap.get("count(1)").toString());
+ // 1. 瀹氫箟棰勭紪璇慡QL妯℃澘锛堢敤?鍗犱綅绗︿唬鏇垮彉閲忥級
+ String sqlV2 = "SELECT\n" +
+ " IFNULL(t2.highlight_count / t1.total_count, 0) AS ratio,\n" +
+ " t1.total_count,\n" +
+ " t2.highlight_count\n" +
+ "FROM\n" +
+ " (SELECT COUNT(*) AS total_count\n" +
+ " FROM d_keyword_list kl\n" +
+ " WHERE kl.is_active = 1\n" +
+ " AND kl.sType = 'rank'\n" +
+ " AND kl.ContractId = ?\n" + // 鍗犱綅绗�1锛歝ontractId
+ " AND kl.sDomain <> 'HC_audit'\n" +
+ " AND kl.sBookMarkName LIKE CONCAT('%', ?, '%')\n" + // 鍗犱綅绗�2锛歴emanticWord
+ " AND EXISTS (\n" +
+ " SELECT 1\n" +
+ " FROM d_event_list el\n" +
+ " WHERE el.contract_name = ?\n" + // 鍗犱綅绗�3锛歝ontractId
+ " AND el.keyword_name LIKE CONCAT('%', ?, '%')\n" + // 鍗犱綅绗�4锛歴emanticWord
+ " )) 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" +
+ " 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,
+ // 鎸夊崰浣嶇椤哄簭浼犲叆鍙傛暟锛堟敞鎰忛『搴忓拰?涓�涓�瀵瑰簲锛�
+ contractId,
+ semanticWord.getWord(),
+ contractId,
+ semanticWord.getWord(),
+ contractId,
+ semanticWord.getWord(),
+ contractId,
+ contractId,
+ semanticWord.getWord()
- String sqlTest = "select keyword_name,target_name,iResultRank from d_event_list where contract_name = '" + contractId + "' and (keyword_name like concat('%','" + semanticWord.getWord() + "','%') or target_name like concat('%','" + semanticWord.getOutWord() + "','%')) order by create_time desc limit 0,1";
- Map<String, Object> semMap = jdbcTemplate.queryForMap(sqlTest);
+ );
+ 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()){//涓婅瘝
+ semanticWord.setCount(acceptindicator.toString());
+ String es_title = semanticWord.getOutWord() + "棣栨涓婅瘝鎻愰啋閭欢";
+ String es_content = "璇箟璇嶏細" + semanticWord.getWord() + "锛涙紡鍑鸿瘝锛�" + semanticWord.getOutWord() +
+ "锛屾帓鍚嶈姹傦細" + (semanticWord.getRanking() < 4 ? "灏忎簬澶т簬" + semanticWord.getRanking() + "鍚嶃��" : "淇濆睍鐜颁笉淇濇帓鍚嶃��") +
+ "杈炬爣鐜囪姹傦細" + semanticWord.getAcceptindicator() +
+ "%锛屽綋鍓嶈揪鏍囩巼锛�" + acceptindicator.doubleValue() * 100 + "%";
+ for (String s_receiver : es_receiver) {
+ emailSendMsgHandle.sendMsg(s_receiver ,es_title ,es_content);
+ }
+ semanticWord.setStatus("5");
+ semanticWordService.updateById(semanticWord);
+ }else {//鎺夎瘝
+ semanticWord.setCount(acceptindicator.toString());
+ String es_title = semanticWord.getOutWord() + "鎺夎瘝鎻愰啋閭欢";
+ String es_content = "璇箟璇嶏細" + semanticWord.getWord() + "锛涙紡鍑鸿瘝锛�" + semanticWord.getOutWord() +
+ "锛屾帓鍚嶈姹傦細" + (semanticWord.getRanking() < 4 ? "灏忎簬绛変簬" + semanticWord.getRanking() + "鍚嶃��" : "淇濆睍鐜颁笉淇濇帓鍚嶃��") +
+ "杈炬爣鐜囪姹傦細" + semanticWord.getAcceptindicator() +
+ "%锛屽綋鍓嶈揪鏍囩巼锛�" + acceptindicator.doubleValue() * 100 + "%";
+ for (String s_receiver : es_receiver) {
+ emailSendMsgHandle.sendMsg(s_receiver ,es_title ,es_content);
+ }
+ semanticWord.setStatus("6");
+ semanticWordService.updateById(semanticWord);
+ }
- String[] es_receiver = new String[]{"182004222@qq.com","lospace@163.com","2156125618@qq.com"};
- String es_title = semMap.get("target_name") + (Integer.parseInt(semMap.get("iResultRank").toString()) <= semanticWord.getRanking()? (stringObjectMap.get("count(1)").toString().equals("1")?"棣栨涓婅瘝鎻愰啋閭欢" : "鍐嶆涓婅瘝鎻愰啋閭欢") : "鎺夎瘝鎻愰啋閭欢");
- String es_content = "璇箟璇嶏細" + semMap.get("keyword_name").toString() + "锛涙紡鍑鸿瘝锛�" + semMap.get("target_name") + (Integer.parseInt(semMap.get("iResultRank").toString()) <= semanticWord.getRanking()? (stringObjectMap.get("count(1)").toString().equals("1")?"棣栨涓婅瘝" : "鍐嶆涓婅瘝") : "鎺夎瘝浜�") +"锛屽綋鍓嶆帓鍚嶏細" + semMap.get("iResultRank") + "銆�";
+ }//鎺夎瘝鏃朵笂璇嶄簡
+ else if (semanticWord.getStatus().equals("6") && semanticWord.getAcceptindicator() <= acceptindicator.doubleValue() * 100){
+ semanticWord.setCount(acceptindicator.toString());
+ String es_title = semanticWord.getOutWord() + "鍐嶆涓婅瘝鎻愰啋閭欢";
+ String es_content = "璇箟璇嶏細" + semanticWord.getWord() + "锛涙紡鍑鸿瘝锛�" + semanticWord.getOutWord() +
+ "锛屾帓鍚嶈姹傦細" + (semanticWord.getRanking() < 4 ? "灏忎簬绛変簬" + semanticWord.getRanking() + "鍚嶃��" : "淇濆睍鐜颁笉淇濇帓鍚嶃��") +
+ "杈炬爣鐜囪姹傦細" + semanticWord.getAcceptindicator() +
+ "%锛屽綋鍓嶈揪鏍囩巼锛�" + acceptindicator.doubleValue() * 100 + "%";
for (String s_receiver : es_receiver) {
emailSendMsgHandle.sendMsg(s_receiver ,es_title ,es_content);
}
-
- semanticWord.setNowNo(semMap.get("iResultRank").toString());
- semanticWord.setStatus(Integer.parseInt(semMap.get("iResultRank").toString()) <= semanticWord.getRanking()?"5" : "6");
-
+ semanticWord.setStatus("5");
semanticWordService.updateById(semanticWord);
-
+ }//涓婅瘝鍚庢帀璇�
+ else if (semanticWord.getStatus().equals("5") && semanticWord.getAcceptindicator() > acceptindicator.doubleValue() * 100){
+ semanticWord.setCount(acceptindicator.toString());
+ String es_title = semanticWord.getOutWord() + "鎺夎瘝鎻愰啋閭欢";
+ String es_content = "璇箟璇嶏細" + semanticWord.getWord() + "锛涙紡鍑鸿瘝锛�" + semanticWord.getOutWord() +
+ "锛屾帓鍚嶈姹傦細" + (semanticWord.getRanking() < 4 ? "灏忎簬绛変簬" + semanticWord.getRanking() + "鍚嶃��" : "淇濆睍鐜颁笉淇濇帓鍚嶃��") +
+ "杈炬爣鐜囪姹傦細" + semanticWord.getAcceptindicator() + "%锛屽綋鍓嶈揪鏍囩巼锛�" + acceptindicator.doubleValue() * 100 + "%";
+ for (String s_receiver : es_receiver) {
+ emailSendMsgHandle.sendMsg(s_receiver ,es_title ,es_content);
+ }
+ semanticWord.setStatus("6");
+ semanticWordService.updateById(semanticWord);
}
+
}
}
}
@@ -100,6 +180,17 @@
// String es_content = "娴嬭瘯鍐呭";
// emailSendMsgHandle.sendMsg(es_receiver ,es_title ,es_content );
}
-
+//
+// // String[] es_receiver = new String[]{"182004222@qq.com","lospace@163.com","2156125618@qq.com"};
+// String es_title = semMap.get("target_name") + (Integer.parseInt(semMap.get("iResultRank").toString()) <= semanticWord.getRanking()? (stringObjectMap.get("count(1)").toString().equals("1")?"棣栨涓婅瘝鎻愰啋閭欢" : "鍐嶆涓婅瘝鎻愰啋閭欢") : "鎺夎瘝鎻愰啋閭欢");
+// String es_content = "璇箟璇嶏細" + semMap.get("keyword_name").toString() + "锛涙紡鍑鸿瘝锛�" + semMap.get("target_name") + (Integer.parseInt(semMap.get("iResultRank").toString()) <= semanticWord.getRanking()? (stringObjectMap.get("count(1)").toString().equals("1")?"棣栨涓婅瘝" : "鍐嶆涓婅瘝") : "鎺夎瘝浜�") +"锛屽綋鍓嶆帓鍚嶏細" + semMap.get("iResultRank") + "銆�";
+// for (String s_receiver : es_receiver) {
+// emailSendMsgHandle.sendMsg(s_receiver ,es_title ,es_content);
+// }
+//
+// semanticWord.setNowNo(semMap.get("iResultRank").toString());
+// semanticWord.setStatus(Integer.parseInt(semMap.get("iResultRank").toString()) <= semanticWord.getRanking()?"5" : "6");
+//
+// semanticWordService.updateById(semanticWord);
}
\ No newline at end of file
--
Gitblit v1.8.0