KprAimWaterCollecationBizFun.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. package com.shkpr.service.aimodelpower.bizmgr;
  2. import com.shkpr.service.aimodelpower.dbdao.DBMgrProxy;
  3. import com.shkpr.service.aimodelpower.dbdao.shizilaishuiDataSource.service.intef.WaterCollecationService;
  4. import com.shkpr.service.aimodelpower.dbdao.shizilaishuiDataSource.service.intef.WaterTapWaterService;
  5. import com.shkpr.service.aimodelpower.dto.ResponseCode;
  6. import com.shkpr.service.aimodelpower.dto.ResponseRes;
  7. import com.shkpr.service.aimodelpower.dto.zilaishuiModel.InPumpModel;
  8. import com.shkpr.service.aimodelpower.jsonbean.zilaishui.JPTbMHourWater;
  9. import com.shkpr.service.aimodelpower.jsonbean.zilaishui.JPTbMWater;
  10. import org.springframework.util.CollectionUtils;
  11. import java.io.File;
  12. import java.io.FileInputStream;
  13. import java.io.FileNotFoundException;
  14. import java.io.InputStream;
  15. import java.time.format.DateTimeFormatter;
  16. import java.util.*;
  17. import java.util.stream.Collectors;
  18. /**
  19. * @ClassName KprAimWaterCollecationBizFun
  20. * @Description: TODO
  21. * @Author LX
  22. * @Date 2024/5/27
  23. * @Version V1.0
  24. **/
  25. public class KprAimWaterCollecationBizFun {
  26. private static final String MSG_SUCCESS = "success.";
  27. private static final String MSG_FAILED = "failed.";
  28. private static final String mStrClassName = "KprAimTapWaterBizFun";
  29. private static final String EMPTY_NULL = "NULL";
  30. public static WaterCollecationService getWaterTapWaterApi(){
  31. return DBMgrProxy.getInstance().applyWaterCollecationService();
  32. }
  33. static DateTimeFormatter formater = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  34. static DateTimeFormatter formater2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  35. //TODO 查询日取水量预测接口
  36. /**
  37. * 1.传入水厂Id及起止日期(日期格式为YYYY-MM-DD),返回日期内,每天的预测取水量数据和实际取水量数据
  38. * 2.同时返回指定截止日期之后,未来4天的预测水量数据和实际水量(如没有,则返回为空数据)
  39. */
  40. public static ResponseRes selectTbWaterList(JPTbMWater jpTbMWater){
  41. ResponseRes responseRes = new ResponseRes();
  42. List<Map<String,Object>> list =new ArrayList<>();
  43. Map<String,Object> map = new HashMap<>();
  44. map.put("ID",null);
  45. map.put("Date",null);
  46. map.put("Max_temperature",null);
  47. map.put("Min_temperature",null);
  48. map.put("Weather",null);
  49. map.put("Month",null);
  50. map.put("Week",null);
  51. map.put("Holiday",null);
  52. map.put("LastActualWaterWithdrawals",null);
  53. map.put("LastActualWaterSupply",null);
  54. map.put("ActualWaterWithdrawals",null);
  55. map.put("ActualWaterSupply",null);
  56. map.put("ForecastWaterWithdrawals",null);
  57. map.put("ForecastActualWaterSupply",null);
  58. map.put("isAbnormal",null);
  59. map.put("isForecast",null);
  60. map.put("LastModifyTime",null);
  61. list.add(map);
  62. responseRes.setResdata(list);
  63. responseRes.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  64. responseRes.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  65. try {
  66. //
  67. List<Map<String, Object>> resList = getWaterTapWaterApi().getTbMWater(jpTbMWater.getIsPage(),
  68. jpTbMWater.getLimit(), jpTbMWater.getOffset(), jpTbMWater.getForDateStr());
  69. if(!CollectionUtils.isEmpty(resList)){
  70. responseRes.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  71. responseRes.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  72. responseRes.setResdata(resList);
  73. }
  74. return responseRes;
  75. }catch(Exception ex){
  76. return responseRes;
  77. }
  78. }
  79. //TODO 小时取水量预测接口
  80. /**
  81. * 传入水厂id及日期,返回指定日期内的小时取水量预测数据和实际小时取水量数据
  82. */
  83. public static ResponseRes selectTbHourWaterList(JPTbMHourWater jpTbMHourWater){
  84. ResponseRes responseRes = new ResponseRes();
  85. List<Map<String,Object>> list =new ArrayList<>();
  86. Map<String,Object> map = new HashMap<>();
  87. map.put("ID",null);
  88. map.put("Date",null);
  89. map.put("Hour",null);
  90. map.put("HourForecastWaterWithdrawals",null);
  91. map.put("HourForecastActualWaterSupply",null);
  92. map.put("WaterWithdrawalsEnergy",null);
  93. map.put("WaterSupplyEnergy",null);
  94. map.put("RealWaterWithdrawalsEnergy",null);
  95. map.put("RealWaterSupplyEnergy",null);
  96. map.put("LastModifyTime",null);
  97. map.put("HourActualWaterWithdrawals",null);
  98. map.put("HourActualWaterSupply ",null);
  99. list.add(map);
  100. responseRes.setResdata(list);
  101. responseRes.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  102. responseRes.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  103. try {
  104. //
  105. List<Map<String, Object>> resList = getWaterTapWaterApi().getTbMHourwater(jpTbMHourWater.getIsPage(),
  106. jpTbMHourWater.getLimit(), jpTbMHourWater.getOffset(), jpTbMHourWater.getForDateStr());
  107. if(!CollectionUtils.isEmpty(resList)){
  108. responseRes.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  109. responseRes.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  110. responseRes.setResdata(resList);
  111. }
  112. return responseRes;
  113. }catch(Exception ex){
  114. return responseRes;
  115. }
  116. }
  117. //TODO 小时取水泵房电耗预测接口
  118. /**
  119. * 传入水厂id及日期
  120. */
  121. public static ResponseRes selectTbMHourwaterWaterwithdrawals(JPTbMHourWater jpTbMHourWater,String subType){
  122. ResponseRes responseRes = new ResponseRes();
  123. //TODO 默认值
  124. List<InPumpModel> defaultModels = new ArrayList<>();
  125. InPumpModel entity = new InPumpModel();
  126. entity.setOrgId(null);
  127. entity.setPumpId(null);
  128. entity.setSubType(subType);
  129. List<Map<String, Object>> defaultRes = new ArrayList<>();
  130. Map<String,Object> map = new HashMap<>();
  131. map.put("ID",null);
  132. map.put("Date",null);
  133. map.put("Hour",null);
  134. map.put("PumpID",null);
  135. map.put("PumpStatus",null);
  136. map.put("HourForecastWaterWithdrawals",null);
  137. map.put("PumpWater",null);
  138. map.put("RealPumpStatus",null);
  139. map.put("PumpEnergy",null);
  140. map.put("RealPumpEnergy",null);
  141. map.put("LastModifyTime",null);
  142. map.put("orgId",null);
  143. defaultRes.add(map);
  144. defaultModels.add(entity);
  145. responseRes.setResdata(defaultModels);
  146. responseRes.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  147. responseRes.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  148. try {
  149. List<Map<String, Object>> resList = getWaterTapWaterApi().getTbMHourwaterWaterwithdrawals(jpTbMHourWater.getIsPage(),
  150. jpTbMHourWater.getLimit(), jpTbMHourWater.getOffset(), jpTbMHourWater.getForDateStr());
  151. //TODO 按水厂分组
  152. Map<Object, List<Map<String, Object>>> groupedData =
  153. resList.stream().collect(Collectors.groupingBy(item -> item.get("orgId")));
  154. //TODO 查询水厂的取水泵,然后将数据拼接
  155. List<InPumpModel> inPumpModels = new ArrayList<>();
  156. for (Object key:groupedData.keySet()) {
  157. InPumpModel model = new InPumpModel();
  158. List<Map<String,Object>> zoonList = getWaterTapWaterApi().getZoonInfoList(key.toString(),subType);
  159. if(!CollectionUtils.isEmpty(zoonList)){
  160. model.setPumpId(zoonList.get(0).get("uid").toString());
  161. }
  162. model.setOrgId(key.toString());
  163. model.setSubType(subType);
  164. List<Map<String, Object>> dataList = groupedData.get(key);
  165. //TODO 将年月日时作为分组条件
  166. Map<String, List<Map<String, Object>>> dataMap = dataList.stream()
  167. .collect(Collectors.groupingBy(emp ->
  168. emp.get("Date") + " " + emp.get("Hour") // 创建复合键
  169. ));
  170. model.setDataList(dataMap);
  171. //TODO 查询相应方案数据
  172. List<Map<String,Object>> drawalsList = getWaterTapWaterApi().getTbMWaterwithdrawalspump(false,
  173. 20,0," AND orgId = '"+key.toString()+"'");
  174. model.setDrawalsList(drawalsList);
  175. inPumpModels.add(model);
  176. }
  177. if(!CollectionUtils.isEmpty(inPumpModels)){
  178. responseRes.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  179. responseRes.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  180. responseRes.setResdata(inPumpModels);
  181. }
  182. return responseRes;
  183. }catch(Exception ex){
  184. return responseRes;
  185. }
  186. }
  187. //TODO 小时供水泵房电耗预测接口
  188. /**
  189. * 传入水厂id及日期
  190. */
  191. public static ResponseRes selectTbMHourwaterWatersupply(JPTbMHourWater jpTbMHourWater,String subType){
  192. ResponseRes responseRes = new ResponseRes();
  193. //TODO 默认值
  194. List<InPumpModel> defaultModels = new ArrayList<>();
  195. InPumpModel entity = new InPumpModel();
  196. entity.setOrgId(null);
  197. entity.setPumpId(null);
  198. entity.setSubType(subType);
  199. List<Map<String, Object>> defaultRes = new ArrayList<>();
  200. Map<String,Object> map = new HashMap<>();
  201. map.put("ID",null);
  202. map.put("Date",null);
  203. map.put("Hour",null);
  204. map.put("PumpID",null);
  205. map.put("PumpStatus",null);
  206. map.put("HourForecastActualWaterSupply",null);
  207. map.put("PumpWater",null);
  208. map.put("RealPumpStatus",null);
  209. map.put("PumpEnergy",null);
  210. map.put("RealPumpEnergy",null);
  211. map.put("LastModifyTime",null);
  212. map.put("orgId",null);
  213. defaultRes.add(map);
  214. defaultModels.add(entity);
  215. responseRes.setResdata(defaultModels);
  216. responseRes.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  217. responseRes.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  218. try {
  219. //
  220. List<Map<String, Object>> resList = getWaterTapWaterApi().getTbMHourwaterWatersupply(jpTbMHourWater.getIsPage(),
  221. jpTbMHourWater.getLimit(), jpTbMHourWater.getOffset(), jpTbMHourWater.getForDateStr());
  222. //TODO 按水厂分组
  223. Map<Object, List<Map<String, Object>>> groupedData =
  224. resList.stream().collect(Collectors.groupingBy(item -> item.get("orgId")));
  225. //TODO 查询水厂的取水泵,然后将数据拼接
  226. List<InPumpModel> inPumpModels = new ArrayList<>();
  227. for (Object key:groupedData.keySet()) {
  228. InPumpModel model = new InPumpModel();
  229. List<Map<String,Object>> zoonList = getWaterTapWaterApi().getZoonInfoList(key.toString(),subType);
  230. if(!CollectionUtils.isEmpty(zoonList)){
  231. model.setPumpId(zoonList.get(0).get("uid").toString());
  232. }
  233. model.setOrgId(key.toString());
  234. model.setSubType(subType);
  235. List<Map<String, Object>> dataList = groupedData.get(key);
  236. //TODO 将年月日时作为分组条件
  237. Map<String, List<Map<String, Object>>> dataMap = dataList.stream()
  238. .collect(Collectors.groupingBy(emp ->
  239. emp.get("Date") + " " + emp.get("Hour") // 创建复合键
  240. ));
  241. model.setDataList(dataMap);
  242. //TODO 查询相应方案数据
  243. List<Map<String,Object>> drawalsList = getWaterTapWaterApi().getTbMWatersupplypump(false,
  244. 20,0," AND orgId = '"+key.toString()+"'");
  245. model.setDrawalsList(drawalsList);
  246. inPumpModels.add(model);
  247. }
  248. if(!CollectionUtils.isEmpty(inPumpModels)){
  249. responseRes.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  250. responseRes.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  251. responseRes.setResdata(inPumpModels);
  252. }
  253. return responseRes;
  254. }catch(Exception ex){
  255. return responseRes;
  256. }
  257. }
  258. }