ConversationContentTask.java 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. package com.kede.common.task;
  2. import com.kede.common.dao.ChatMsgOptimizeMapper;
  3. import com.kede.common.model.ChatMsg;
  4. import com.kede.common.model.ChatMsgUser;
  5. import com.kede.common.utils.DateUtils;
  6. import com.kede.common.utils.StringUtils;
  7. import com.kede.wechat.bo.InputChatMsg;
  8. import com.kede.wechat.service.ConversationContentService;
  9. import org.springframework.scheduling.annotation.Scheduled;
  10. import org.springframework.stereotype.Component;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RequestMethod;
  13. import org.springframework.web.bind.annotation.RestController;
  14. import javax.annotation.Resource;
  15. import java.util.Date;
  16. import java.util.List;
  17. import java.util.Map;
  18. import java.util.StringJoiner;
  19. @Component
  20. @RestController
  21. public class ConversationContentTask {
  22. @Resource
  23. private ConversationContentService conversationContentService;
  24. @Resource
  25. private com.kede.common.dao.ChatMsgMapper chatMsgMapper;
  26. @Resource
  27. private com.kede.common.dao.ChatMsgUserMapper chatMsgUserMapper;
  28. @Resource
  29. private ChatMsgOptimizeMapper chatMsgOptimizeMapper;
  30. /**
  31. * 获取数据间隔时间
  32. * 例如:-2 表示当前日期减二,2025-06-24 结果就是从6-22开始到现在就是三天的数据
  33. */
  34. static final int days=-2;
  35. /**
  36. * 获取企业微信聊天记录
  37. */
  38. //每天下午六点执行
  39. @Scheduled(cron = "0 0 18 * * ?")
  40. @RequestMapping(value ="/open/pushMsg", method = RequestMethod.GET)
  41. public void pushMsg() {
  42. long startTime = System.currentTimeMillis();
  43. Integer pageSeq = 0;
  44. Integer pageLimit = 100;
  45. Integer count = 0;
  46. // type=0 湖南,1=内蒙
  47. for (int type = 0; type < 2; type++) {
  48. //循环获取数据,每次100条,count不足100条时最后一次循序
  49. while (count < pageLimit) {
  50. Map<String, Object> map = conversationContentService.pushChatData(pageSeq, pageLimit,days,type);
  51. List<InputChatMsg> list = (List<InputChatMsg>) map.get("list");
  52. pushChatMsg(list,type);
  53. if (map == null) {
  54. break;
  55. }
  56. if ((int)map.get("total")<100) {
  57. break;
  58. }
  59. pageSeq= pageSeq + pageLimit+1;
  60. }
  61. if (type==0){
  62. System.out.println("=========================================湖南获取数据完成=====");
  63. }else{
  64. System.out.println("=========================================内蒙获取数据完成=====");
  65. }
  66. }
  67. long endTime = System.currentTimeMillis();
  68. //输出耗时计算出耗时分钟
  69. long time = (endTime - startTime)/1000;
  70. //换算成分钟
  71. long f = time / 60;
  72. long m = time % 60;
  73. Date earlyToday = DateUtils.getEarlyToday();
  74. //按当天零点算,减去x天,即=-1的时候取2天数据,今天与昨天
  75. Date date = DateUtils.getDateBefore(earlyToday, days);
  76. chatMsgOptimizeMapper.deleteFromTime(date);
  77. System.out.println("=========================================获取数据完成=====耗时"+f+"分"+m+"秒=========================");
  78. }
  79. /**
  80. * 将数据处理封装插入数据库
  81. */
  82. private void pushChatMsg(List<InputChatMsg> list, Integer type) {
  83. int index=0;
  84. //遍历数据 迭代获取数据写入数据库
  85. for (InputChatMsg chatMsg : list) {
  86. index++;
  87. System.out.println("===================第"+index+"条数据\n");
  88. String from = chatMsg.getFrom();
  89. //获取发送这名称
  90. // System.out.println("====>"+chatMsg);
  91. //如果是同意聊天,删除之前存储的未知名称,获取新的名称
  92. if (chatMsg.getAction().equals("agree")){
  93. chatMsgUserMapper.deleteByUserId(from);
  94. }
  95. Map<String, Object> map = conversationContentService.pushGetChatName(from, type);
  96. String chatName=map.get("name").toString();
  97. String tolist = chatMsg.getTolist();
  98. String roomName=null;
  99. //判定是否有群编号,判定是单聊还是群聊,群聊获取群名称
  100. if (StringUtils.isNotEmpty(chatMsg.getRoomid())){
  101. ChatMsg msg = new ChatMsg();
  102. msg.setRoomid(chatMsg.getRoomid());
  103. msg.setMsgid(chatMsg.getMsgid());
  104. roomName = conversationContentService.pushGetRoomName(msg,type);
  105. }
  106. StringJoiner stringJoiner = new StringJoiner(",");
  107. if (StringUtils.isNotEmpty(tolist)){
  108. //用逗号分割
  109. String[] tolistArr = tolist.split(",");
  110. //获取接收者名称
  111. int x=0;
  112. for (String tolistName : tolistArr) {
  113. Map<String, Object> maps = conversationContentService.pushGetChatName(tolistName,type);
  114. x= (int) maps.get("code");
  115. String name=maps.get("name").toString();
  116. if (name != null){
  117. stringJoiner.add(name);
  118. }
  119. }
  120. }
  121. ChatMsg in= new ChatMsg();
  122. in.setMsgid(chatMsg.getMsgid());
  123. in.setProvinceType(chatMsg.getProvinceType());
  124. in.setActionType(chatMsg.getAction());
  125. in.setFromId(chatMsg.getFrom());
  126. in.setFromName(chatName);
  127. in.setTolist(tolist);
  128. in.setTolistName(stringJoiner.toString());
  129. in.setRoomid(chatMsg.getRoomid());
  130. if (StringUtils.isNotBlank(in.getRoomid())){
  131. in.setType(1);
  132. }else{
  133. in.setType(0);
  134. }
  135. in.setRoomName(roomName);
  136. if (StringUtils.isNotBlank(chatMsg.getRoomid())){
  137. ChatMsgUser chatMsgUser = chatMsgUserMapper.selectByUserId(chatMsg.getRoomid(),chatMsg.getProvinceType());
  138. if (chatMsgUser == null&&roomName!=null){
  139. ChatMsgUser cmu = new ChatMsgUser();
  140. cmu.setUserId(chatMsg.getRoomid());
  141. cmu.setName(roomName);
  142. cmu.setType(3);
  143. cmu.setProvinceType(chatMsg.getProvinceType());
  144. cmu.setCreateTime(new Date());
  145. chatMsgUserMapper.insert(cmu);
  146. }
  147. }
  148. in.setMsgtime(chatMsg.getMsgtime());
  149. in.setMsgtype(chatMsg.getMsgtype());
  150. in.setMsgurl(chatMsg.getMsgurl());
  151. in.setContent(chatMsg.getContent());
  152. in.setCreateTime(new Date());
  153. chatMsgMapper.insert(in);
  154. }
  155. }
  156. @RequestMapping(value ="/open/pushMsgName", method = RequestMethod.GET)
  157. public void pushMsgName() {
  158. List<ChatMsgUser> chatMsgUsers = chatMsgUserMapper.selectByProvinceType(0);
  159. for (ChatMsgUser chatMsgUser : chatMsgUsers) {
  160. String name = chatMsgUser.getName();
  161. if (name.contains("未知")){
  162. System.out.println(name);
  163. Map<String, Object> map = conversationContentService.pushGetUserName(chatMsgUser.getUserId(), 0);
  164. String str = (String) map.get("name");
  165. if (!str.contains("未知")){
  166. chatMsgUser.setName(str);
  167. System.out.println(str);
  168. chatMsgUserMapper.update(chatMsgUser);
  169. }
  170. }
  171. }
  172. }
  173. }