| | |
| | | @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()); |
| | |
| | | " 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, |
| | | // 按占位符顺序传入参数(注意顺序和?一一对应) |
| | |
| | | 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()){//上词 |