ScheduleAtachUtil.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package com.sooka.sponest.data.utils;
  2. import com.ruoyi.common.core.utils.SpringUtils;
  3. import com.ruoyi.common.core.utils.file.FilePrefixUtils;
  4. import com.ruoyi.common.redis.service.RedisService;
  5. import com.ruoyi.system.api.RemoteConfigService;
  6. import com.ruoyi.system.api.RemoteFileService;
  7. import com.ruoyi.system.api.domain.SysFile;
  8. import com.sooka.sponest.data.system.attach.service.ICenterdataTAttachService;
  9. import org.apache.commons.collections4.MapUtils;
  10. import org.slf4j.Logger;
  11. import org.slf4j.LoggerFactory;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.context.annotation.Configuration;
  14. import org.springframework.scheduling.annotation.EnableScheduling;
  15. import org.springframework.scheduling.annotation.Scheduled;
  16. import org.springframework.web.bind.annotation.GetMapping;
  17. import org.springframework.web.multipart.MultipartFile;
  18. import java.io.File;
  19. import java.net.HttpURLConnection;
  20. import java.net.URL;
  21. import java.util.Arrays;
  22. import java.util.List;
  23. import java.util.Map;
  24. @Configuration
  25. @EnableScheduling
  26. //@RestController
  27. //@RequestMapping("/testattach")
  28. public class ScheduleAtachUtil {
  29. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  30. @Autowired
  31. private ICenterdataTAttachService centerdataTAttachService;
  32. @Autowired
  33. private RedisService redisService;
  34. // 文件前缀
  35. public static final String FILE_PREFIX_LOCAL = "fileUrl";
  36. public static final String FILE_PREFIX_HIK1 = "HIK_1";
  37. public static final String FILE_PREFIX_HIK2 = "HIK_2";
  38. public static final String FILE_PREFIX_DH1 = "DH_1";
  39. public static final String FILE_PREFIX_DH2 = "DH_2";
  40. @GetMapping("/attach")
  41. public void runAtach() {
  42. Map<String, String> paramMap = SpringUtils.getBean(RemoteConfigService.class).remotegetConfigMap(Arrays.asList(FILE_PREFIX_LOCAL, FILE_PREFIX_HIK1, FILE_PREFIX_HIK2, FILE_PREFIX_DH1, FILE_PREFIX_DH2)).getData();
  43. // paramMap.put("token", redisService.getCacheObject("DH_TOKEN"));// 大华token
  44. List<Map<String, Object>> list = centerdataTAttachService.selectFailUpattah();
  45. for (Map<String, Object> map : list) {
  46. paramMap.put("czlx", "AI");
  47. paramMap.put("busId", MapUtils.getString(map, "busId"));
  48. centerdataTAttachService.updateEventAttach(paramMap);
  49. logger.info("延时1分钟");
  50. }
  51. }
  52. //每周的周日晚上8点开始运行
  53. @Scheduled(cron = "0 0 20 ? * 1")
  54. @GetMapping("/urlToMultipartFile")
  55. public void urlToMultipartFile() {
  56. Map<String, String> paramMap = SpringUtils.getBean(RemoteConfigService.class).remotegetConfigMap(Arrays.asList(FILE_PREFIX_LOCAL, FILE_PREFIX_HIK1, FILE_PREFIX_HIK2, FILE_PREFIX_DH1, FILE_PREFIX_DH2)).getData();
  57. List<Map<String, Object>> attaches = centerdataTAttachService.selectFailUpattah();
  58. for (Map<String, Object> item : attaches) {
  59. paramMap.put("token", redisService.getCacheObject("DH_TOKEN"));// 大华token
  60. File file = null;
  61. MultipartFile multipartFile = null;
  62. String url = "";
  63. if ("DH_1".equals(item.get("BusSource"))) {
  64. url = FilePrefixUtils.getUrlPrefix(item.get("BusSource").toString(), paramMap) + item.get("url") + "?token=" + MapUtils.getString(paramMap, "token");
  65. } else {
  66. url = FilePrefixUtils.getUrlPrefix(item.get("BusSource").toString(), paramMap) + item.get("url");
  67. }
  68. HttpURLConnection httpUrl = null;
  69. try {
  70. httpUrl = (HttpURLConnection) new URL(url).openConnection();
  71. // 设置连接超时时间为5秒
  72. httpUrl.setConnectTimeout(5000);
  73. // 设置读取超时时间为10秒
  74. httpUrl.setReadTimeout(10000);
  75. httpUrl.connect();
  76. file = FilePrefixUtils.inputStreamToFile(httpUrl.getInputStream(), System.currentTimeMillis() + ".jpg");
  77. multipartFile = FilePrefixUtils.fileToMultipartFile(file);
  78. } catch (Exception e) {
  79. logger.info(e.getMessage());
  80. } finally {
  81. if (null != httpUrl) {
  82. httpUrl.disconnect();
  83. }
  84. }
  85. if (null != multipartFile) {
  86. SysFile sysFile = SpringUtils.getBean(RemoteFileService.class).upload(multipartFile).getData();
  87. try {
  88. Thread.sleep(30000);
  89. } catch (InterruptedException e) {
  90. logger.error(e.getMessage());
  91. Thread.currentThread().interrupt();
  92. }
  93. centerdataTAttachService.updateEventAttachSchedule(item, sysFile);
  94. }
  95. }
  96. }
  97. }