CacheContext.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  1. package com.gyee.generation.init;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.alibaba.fastjson.TypeReference;
  4. import com.gyee.common.model.StringUtils;
  5. import com.gyee.generation.model.auto.*;
  6. import com.gyee.generation.service.auto.*;
  7. import com.gyee.generation.util.redis.RedisService;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import org.springframework.beans.factory.annotation.Value;
  11. import org.springframework.boot.CommandLineRunner;
  12. import org.springframework.stereotype.Component;
  13. import javax.annotation.Resource;
  14. import java.util.*;
  15. import java.util.stream.Collectors;
  16. /**
  17. * @ClassName : CacheContext
  18. * @Author : xieshengjie
  19. * @Date: 2021/5/18 9:35
  20. * @Description : 缓存
  21. */
  22. @Component
  23. public class CacheContext implements CommandLineRunner {
  24. Logger logger = LoggerFactory.getLogger(CacheContext.class);
  25. @Resource
  26. private IWindturbineService windturbineService;
  27. @Resource
  28. private ILineService lineService;
  29. @Resource
  30. private IProjectService projectService;
  31. @Resource
  32. private IWindpowerstationService windpowerstationService;
  33. @Resource
  34. private IMeterpointService meterpointService;
  35. @Resource
  36. private IEquipmentmodelService equipmentmodelService;
  37. @Resource
  38. private IWindturbinestatusdiService windturbinestatusdiService;
  39. @Resource
  40. private IWindturbinepowerService windturbinepowerService;
  41. @Resource
  42. private RedisService redisService;
  43. @Resource
  44. private IWindturbinetestingpointaiService windturbinetestingpointaiService;
  45. @Resource
  46. private IWindpowerstationtestingpointService windpowerstationtestingpointService;
  47. @Resource
  48. private IWindturbinepowercurvefittingService windturbinepowercurvefittingService;
  49. @Value("${runWindpowerstation}")
  50. private String runWindpowerstation;
  51. @Resource
  52. private IWindturbinetestingpointdisService windturbinetestingpointdisService;
  53. public static List<Windturbine> wtls = new ArrayList<>();
  54. public static Map<String,List<Windturbine>> wpwtmap = new HashMap<>();
  55. public static Map<String,List<Windturbine>> pjwtmap = new HashMap<>();
  56. public static Map<String,List<Windturbine>> lnwtmap = new HashMap<>();
  57. public static List<Project> projects = new ArrayList<>();
  58. public static List<Line> lines = new ArrayList<>();
  59. public static List<Windpowerstation> wpls = new ArrayList<>();
  60. public static List<Meterpoint> meterpoints = new ArrayList<>();
  61. public static Map<String, Meterpoint> meterpointMap = new HashMap<>();
  62. public static Map<String, List<Project>> wppromap = new HashMap<>();
  63. public static Map<String, List<Line>> prolinemap = new HashMap<>();
  64. public static Map<String, List<Windturbine>> linewtmap = new HashMap<>();
  65. public static Map<String, Map<String, Windturbinetestingpointnew>> wtpAimap = new HashMap<>();// 风电机测点AI表
  66. public static Map<String, Map<String, Windpowerstationpointnew>> linepointmap = new HashMap<>();
  67. public static Map<String, Map<String, Windpowerstationpointnew>> propointmap = new HashMap<>();
  68. public static Map<String, Map<String, Windpowerstationpointnew>> wppointmap = new HashMap<>();
  69. public static Map<String, Project> proMap = new HashMap<>();
  70. public static Map<String, List<Windturbinestatusdi>> statusMap = new HashMap<>();
  71. public static Map<String, Map<Double, Double>> zbzglMap = new HashMap<>();
  72. public static Map<String, Equipmentmodel> modelMap = new HashMap<>();
  73. public static Map<String, Map<Double, Double>> zzsglMap = new HashMap<>();
  74. public static Map<String, Double> modelpower = new HashMap<>();
  75. public static Map<String, Integer> redisDbMap = new HashMap<>();
  76. public static Map<String, Map<String, Windturbinetestingpointai>> wtPointmap = new HashMap<>();// 风电机测点AI表
  77. public static Map<String, Map<String, Windpowerstationtestingpoint>> wpPointmap = new HashMap<>();
  78. public static Map<String, Map<Double, Windturbinepowercurvefitting>> curveFittingPowerMap = new HashMap<>();
  79. public static List<Windturbinetestingpointdis> pointdis = new ArrayList<>();
  80. public static Map< String,Map<String, Windturbinetestingpointdis>> pointdismap = new HashMap<>();
  81. @Override
  82. public void run(String... args) throws Exception {
  83. logger.info("缓存开始------------------------------------------------------------");
  84. // initial();
  85. List<String> runWpids = Arrays.asList(runWindpowerstation.split(","));
  86. logger.info(runWpids.get(0) + "------------------" + runWpids.size());
  87. List<Equipmentmodel> equipmentmodels = equipmentmodelService.list();
  88. equipmentmodels.stream().forEach(e -> {
  89. modelMap.put(e.getId(), e);
  90. });
  91. wtls = windturbineService.list().stream().filter(i -> runWpids.contains(i.getWindpowerstationid())).collect(Collectors.toList());
  92. logger.info(wtls.size() + "");
  93. wtls.forEach(wt -> {
  94. Equipmentmodel equipmentmodel = modelMap.get(wt.getModelid());
  95. modelpower.put(wt.getId(), equipmentmodel.getPowerproduction());
  96. String wtString = redisService.get(wt.getId());
  97. Map<String, Windturbinetestingpointnew> stringWindturbinetestingpointnewMap = JSONObject.parseObject(wtString, new TypeReference<Map<String, Windturbinetestingpointnew>>() {
  98. });
  99. wtpAimap.put(wt.getId(), stringWindturbinetestingpointnewMap);
  100. if (linewtmap.containsKey(wt.getLineid())) {
  101. linewtmap.get(wt.getLineid()).add(wt);
  102. } else {
  103. List<Windturbine> lines = new ArrayList<>();
  104. lines.add(wt);
  105. linewtmap.put(wt.getLineid(), lines);
  106. }
  107. if (wpwtmap.containsKey(wt.getWindpowerstationid())){
  108. wpwtmap.get(wt.getWindpowerstationid()).add(wt);
  109. }else {
  110. List<Windturbine> wps = new ArrayList<>();
  111. wps.add(wt);
  112. wpwtmap.put(wt.getWindpowerstationid(),wps);
  113. }
  114. if (pjwtmap.containsKey(wt.getProjectid())){
  115. pjwtmap.get(wt.getProjectid()).add(wt);
  116. }else {
  117. List<Windturbine> pjs = new ArrayList<>();
  118. pjs.add(wt);
  119. pjwtmap.put(wt.getProjectid(),pjs);
  120. }
  121. if (lnwtmap.containsKey(wt.getLineid())){
  122. lnwtmap.get(wt.getLineid()).add(wt);
  123. }else {
  124. List<Windturbine> lnls = new ArrayList<>();
  125. lnls.add(wt);
  126. lnwtmap.put(wt.getLineid(),lnls);
  127. }
  128. });
  129. projects = projectService.list().stream().filter(i -> runWpids.contains(i.getWindpowerstationid())).collect(Collectors.toList());
  130. projects.stream().forEach(p -> {
  131. proMap.put(p.getId(), p);
  132. if (wppromap.containsKey(p.getWindpowerstationid())) {
  133. wppromap.get(p.getWindpowerstationid()).add(p);
  134. } else {
  135. List<Project> prolist = new ArrayList<>();
  136. prolist.add(p);
  137. wppromap.put(p.getWindpowerstationid(), prolist);
  138. }
  139. String pjString = redisService.get(p.getId());
  140. Map<String, Windpowerstationpointnew> stringWindpowerstationpointnewMap = JSONObject.parseObject(pjString, new TypeReference<Map<String, Windpowerstationpointnew>>() {
  141. });
  142. propointmap.put(p.getId(), stringWindpowerstationpointnewMap);
  143. });
  144. lines = lineService.list().stream().filter(i -> StringUtils.isNotNull(proMap.get(i.getProjectid())) && runWpids.contains(proMap.get(i.getProjectid()).getWindpowerstationid())).collect(Collectors.toList());
  145. lines.stream().forEach(l -> {
  146. if (prolinemap.containsKey(l.getProjectid())) {
  147. prolinemap.get(l.getProjectid()).add(l);
  148. } else {
  149. List<Line> lineList = new ArrayList<>();
  150. lineList.add(l);
  151. prolinemap.put(l.getProjectid(), lineList);
  152. }
  153. String lnString = redisService.get(l.getId());
  154. Map<String, Windpowerstationpointnew> stringWindpowerstationpointnewMap = JSONObject.parseObject(lnString, new TypeReference<Map<String, Windpowerstationpointnew>>() {
  155. });
  156. linepointmap.put(l.getId(), stringWindpowerstationpointnewMap);
  157. });
  158. wpls = windpowerstationService.list().stream().filter(i -> runWpids.contains(i.getId())).collect(Collectors.toList());
  159. ;
  160. meterpoints = meterpointService.list().stream().filter(i -> runWpids.contains(i.getWindpowerstationid())).collect(Collectors.toList());
  161. meterpoints.stream().forEach(meterpoint -> {
  162. meterpointMap.put(meterpoint.getId(), meterpoint);
  163. });
  164. wpls.stream().forEach(wp -> {
  165. String wpString = redisService.get(wp.getId());
  166. Map<String, Windpowerstationpointnew> stringMapMap = JSONObject.parseObject(wpString, new TypeReference<Map<String, Windpowerstationpointnew>>() {
  167. });
  168. wppointmap.put(wp.getId(), stringMapMap);
  169. });
  170. String sszzt = redisService.get("SSZZT");
  171. statusMap = JSONObject.parseObject(sszzt, new TypeReference<Map<String, List<Windturbinestatusdi>>>() {
  172. });
  173. String zbzgl = redisService.get("ZBZGL");
  174. zbzglMap = JSONObject.parseObject(zbzgl, new TypeReference<Map<String, Map<Double, Double>>>() {
  175. });
  176. // List<Windturbinepower> windturbinepowerList = windturbinepowerService.list().stream().filter(windturbinepower -> runWindpowerstation.contains(windturbinepower.getWindpowerstationid())).collect(Collectors.toList());
  177. // windturbinepowerList.stream().forEach(w -> {
  178. // if (zzsglMap.containsKey(w.getWindturbineid())){
  179. // zzsglMap.get(w.getWindturbineid()).put(w.getSpeed(),w.getTheorypower());
  180. // }else {
  181. // Map<Double,Double> tempMap = new HashMap<>();
  182. // tempMap.put(w.getSpeed(),w.getTheorypower());
  183. // zzsglMap.put(w.getWindturbineid(),tempMap);
  184. // }
  185. //
  186. // });
  187. for (int i = 0; i < 8; i++) {
  188. Set<String> keys = redisService.keys(i);
  189. for (String key : keys) {
  190. redisDbMap.put(key, i);
  191. }
  192. }
  193. // String wpString = redisService.get("PRODUCT-WP");
  194. // wppointmap = JSONObject.parseObject(wpString, new TypeReference<Map<String, Map<String, Windpowerstationpointnew>>>() {
  195. // });
  196. // String pjString = redisService.get("PRODUCT-PJ");
  197. // propointmap = JSONObject.parseObject(pjString, new TypeReference<Map<String, Map<String, Windpowerstationpointnew>>>() {
  198. // });
  199. // String lnString = redisService.get("PRODUCT-LN");
  200. // linepointmap = JSONObject.parseObject(lnString, new TypeReference<Map<String, Map<String, Windpowerstationpointnew>>>() {
  201. // });
  202. // String wtString = redisService.get("PRODUCT-WT");
  203. // wtpAimap = JSONObject.parseObject(wtString, new TypeReference<Map<String, Map<String, Windturbinetestingpointnew>>>() {
  204. // });
  205. redisService.select(8);
  206. // initial();
  207. String wtPointString = redisService.get("wtPointmap");
  208. wtPointmap = JSONObject.parseObject(wtPointString, new TypeReference<Map<String, Map<String, Windturbinetestingpointai>>>() {
  209. });
  210. String wpPointString = redisService.get("wpPointmap");
  211. wpPointmap = JSONObject.parseObject(wpPointString, new TypeReference<Map<String, Map<String, Windpowerstationtestingpoint>>>() {
  212. });
  213. String curveFittingPowerString = redisService.get("curveFittingPowerMap");
  214. curveFittingPowerMap = JSONObject.parseObject(curveFittingPowerString, new TypeReference<Map<String, Map<Double, Windturbinepowercurvefitting>>>() {
  215. });
  216. String pointdisString = redisService.get("pointdis");
  217. pointdis = JSONObject.parseObject(pointdisString, new TypeReference<List<Windturbinetestingpointdis>>() {
  218. });
  219. Map<String, Windturbinetestingpointdis> items = null;
  220. if (pointdis != null && !pointdis.isEmpty()) {
  221. for (int i = 0; i < pointdis.size(); i++) {
  222. Windturbinetestingpointdis point = pointdis.get(i);
  223. if (pointdismap.containsKey(point.getWindturbineid())) {
  224. items = pointdismap.get(point.getWindturbineid());
  225. items.put(point.getUniformcode(), point);
  226. } else {
  227. items = new HashMap<String, Windturbinetestingpointdis>();
  228. pointdismap.put(point.getWindturbineid(), items);
  229. items.put(point.getUniformcode(), point);
  230. }
  231. }
  232. }
  233. logger.info("缓存结束------------------------------------------------------------");
  234. }
  235. public void initial() {
  236. List<Windturbinetestingpointai> wtpointlist = windturbinetestingpointaiService.list();
  237. Map<String, Map<String, Windturbinetestingpointai>> wtPointmap = new HashMap<>();// 风电机测点AI表
  238. Map<String, Windturbinetestingpointai> map = null;
  239. if (wtpointlist != null && !wtpointlist.isEmpty()) {
  240. for (Windturbinetestingpointai mp : wtpointlist) {
  241. if (wtPointmap.containsKey(mp.getWindturbineid())) {
  242. map = wtPointmap.get(mp.getWindturbineid());
  243. map.put(mp.getUniformcode(), mp);
  244. } else {
  245. map = new HashMap<>();
  246. map.put(mp.getUniformcode(), mp);
  247. wtPointmap.put(mp.getWindturbineid(), map);
  248. }
  249. }
  250. }
  251. String s = JSONObject.toJSONString(wtPointmap);
  252. redisService.set("wtPointmap", s);
  253. Map<String, Map<String, Windpowerstationtestingpoint>> wpPointmap = new HashMap<>();
  254. List<Windpowerstationtestingpoint> list = windpowerstationtestingpointService.list();
  255. Map<String, Windpowerstationtestingpoint> items = null;
  256. if (list != null && !list.isEmpty()) {
  257. for (int i = 0; i < list.size(); i++) {
  258. Windpowerstationtestingpoint point = list.get(i);
  259. if (wpPointmap.containsKey(point.getWindpowerstationid())) {
  260. items = wpPointmap.get(point.getWindpowerstationid());
  261. items.put(point.getUniformcode(), point);
  262. } else {
  263. items = new HashMap<String, Windpowerstationtestingpoint>();
  264. wpPointmap.put(point.getWindpowerstationid(), items);
  265. items.put(point.getUniformcode(), point);
  266. }
  267. }
  268. }
  269. s = JSONObject.toJSONString(wpPointmap);
  270. redisService.set("wpPointmap", s);
  271. Map<String, Map<Double, Windturbinepowercurvefitting>> curveFittingPowerMap = new HashMap<>();
  272. List<Windturbinepowercurvefitting> econWtPowerCurveFittings = windturbinepowercurvefittingService.list();
  273. if (StringUtils.isNotNull(econWtPowerCurveFittings)) {
  274. econWtPowerCurveFittings.stream().forEach(curveFitting -> {
  275. if (curveFittingPowerMap.containsKey(curveFitting.getWindturbineid())) {
  276. curveFittingPowerMap.get(curveFitting.getWindturbineid()).put(curveFitting.getSpeed(), curveFitting);
  277. } else {
  278. Map<Double, Windturbinepowercurvefitting> powerMap = new HashMap<>();
  279. powerMap.put(curveFitting.getSpeed(), curveFitting);
  280. curveFittingPowerMap.put(curveFitting.getWindturbineid(), powerMap);
  281. }
  282. });
  283. }
  284. s = JSONObject.toJSONString(curveFittingPowerMap);
  285. redisService.set("curveFittingPowerMap", s);
  286. List<Windturbinetestingpointdis> pointdis = new ArrayList<>();
  287. pointdis = windturbinetestingpointdisService.list();
  288. s = JSONObject.toJSONString(pointdis);
  289. redisService.set("pointdis", s);
  290. }
  291. }