BuildingService.java 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. package com.project.zcustom.tools;
  2. import com.alibaba.fastjson2.JSON;
  3. import com.alibaba.fastjson2.JSONArray;
  4. import com.alibaba.fastjson2.JSONObject;
  5. import com.project.common.utils.StringUtils;
  6. import com.project.common.utils.http.HttpUtils;
  7. import com.project.zcustom.domain.addional.LargeBuilding;
  8. import com.project.zcustom.domain.addional.LargeBuildingControl;
  9. import com.project.zcustom.domain.addional.LargeBuildingControlAmmeterDetail;
  10. import com.project.zcustom.domain.addional.LargeBuildingLoadDetail;
  11. import com.project.zcustom.domain.plat.PlatApiRecord;
  12. import com.project.zcustom.mapper.unit.PlatBuildingMapper;
  13. import com.project.zcustom.service.plat.IPlatApiRecordService;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import javax.annotation.Resource;
  17. import java.util.ArrayList;
  18. import java.util.List;
  19. /**
  20. * @Description 楼宇运行监控接口
  21. * @Author bqyang
  22. * @Date 2025/2/10 16:58
  23. * @Version 1.0
  24. */
  25. @Service
  26. public class BuildingService {
  27. @Autowired
  28. private PlatBuildingMapper platBuildingMapper;
  29. @Resource
  30. IPlatApiRecordService iPlatApiRecordService;
  31. /**
  32. * 楼宇中控 接口数据同步
  33. */
  34. public void getLeftBuildingData(){
  35. String controlEquipment = repeat(ApiUrlConfig.getControlEquipment(), null);
  36. JSONObject jsonObject = JSONObject.parseObject(controlEquipment);
  37. Long normalNum = Long.valueOf(jsonObject.getJSONObject("sj").getString("zcdw"));
  38. Long abnormalNum = Long.valueOf(jsonObject.getJSONObject("sj").getString("ycdw"));
  39. LargeBuildingControl largeBuildingControl = new LargeBuildingControl(
  40. repeat(ApiUrlConfig.getControlElectricity(), null),
  41. repeat(ApiUrlConfig.getControlElevator(), null),
  42. repeat(ApiUrlConfig.getControlElectricityRoom(), null),
  43. repeat(ApiUrlConfig.getControlTodaySum(), null),
  44. repeat(ApiUrlConfig.getControlMonthSum(), "type=一号配电室"),
  45. repeat(ApiUrlConfig.getControlMonthSum(), "type=二号配电室"),
  46. repeat(ApiUrlConfig.getControlMonthSum(), "type=三号配电室"),
  47. repeat(ApiUrlConfig.getControlImportantSum(), "type=一号配电室"),
  48. repeat(ApiUrlConfig.getControlImportantSum(), "type=二号配电室"),
  49. repeat(ApiUrlConfig.getControlImportantSum(), "type=三号配电室"),
  50. repeat(ApiUrlConfig.getControlEquipment(), null),
  51. normalNum,
  52. abnormalNum,
  53. repeat(ApiUrlConfig.getControlAlarm(), null),
  54. repeat(ApiUrlConfig.getControlWater(), "position=23F"),
  55. repeat(ApiUrlConfig.getControlWater(), "position=负二"),
  56. repeat(ApiUrlConfig.getPhotovoltaicPower(), null),
  57. repeat(ApiUrlConfig.getControlAlertDetails(), "type=电表"),
  58. repeat(ApiUrlConfig.getControlAlertDetails(), "type=水浸"),
  59. repeat(ApiUrlConfig.getControlAlertDetails(), "type=烟雾"),
  60. repeat(ApiUrlConfig.getControlAlertDetails(), "type=液位")
  61. );
  62. if (platBuildingMapper.getExist() > 0){
  63. platBuildingMapper.updateBuildingControl(largeBuildingControl);
  64. }
  65. else platBuildingMapper.addBuildingControl(largeBuildingControl);
  66. }
  67. /**
  68. * 电表、异常、负载明细
  69. */
  70. public void getLeftBuildingDataDetail(){
  71. platBuildingMapper.deleteAmmeterDetails();
  72. String[] arr = {
  73. "制冷机组",
  74. "公共照明",
  75. "生活水泵",
  76. "楼外设备",
  77. "消防",
  78. "供热设备",
  79. "冷源泵",
  80. "充电桩",
  81. "电梯",
  82. "厨房",
  83. "热源泵",
  84. "地下室",
  85. "办公",
  86. "通信辅助设备",
  87. "信息UPS",
  88. "信息空调",
  89. "调度UPS",
  90. "调度空调",
  91. "通信UPS",
  92. "通信空调",
  93. "交易机房",
  94. "管控机房空调"
  95. };
  96. List<LargeBuildingControlAmmeterDetail> list = new ArrayList<>();
  97. for (int i=0; i<arr.length; i++){
  98. LargeBuildingControlAmmeterDetail largeBuildingControlAmmeterDetail = new LargeBuildingControlAmmeterDetail();
  99. largeBuildingControlAmmeterDetail.setAmmeterDetail(repeat(ApiUrlConfig.getControlElectricityDetail(), "type=" + arr[i]));
  100. largeBuildingControlAmmeterDetail.setType(arr[i]);
  101. list.add(largeBuildingControlAmmeterDetail);
  102. }
  103. platBuildingMapper.addAmmeterDetails(list);
  104. platBuildingMapper.deleteLoadDetails();
  105. String[] type = {"一号配电室", "二号配电室", "三号配电室"};
  106. String[] state = {"重载", "轻载", "过载", "空载", "正常"};
  107. for (int i = 0; i < 3; i++){
  108. for (int j = 0; i < 5; j++){
  109. String res = repeat(ApiUrlConfig.getControlElectricityDetail(), "type=" + type[i] + "&" + "state=" + state[j]);
  110. if (StringUtils.isBlank(res)){
  111. return;
  112. }
  113. List<LargeBuildingLoadDetail> load = JSON.parseArray(res, LargeBuildingLoadDetail.class);
  114. for (LargeBuildingLoadDetail it : load){
  115. it.setState(j + 1);
  116. it.setKind(i + 1);
  117. }
  118. platBuildingMapper.addLoadDetails(load);
  119. }
  120. }
  121. }
  122. /**
  123. * 办公能耗 / 大楼安防 接口数据同步
  124. */
  125. public void getRightBuildingDataFirstHalf(){
  126. LargeBuilding largeBuilding = new LargeBuilding();
  127. largeBuilding.setJsonFrequency(repeat(ApiUrlConfig.getJsonFrequency(), null));
  128. largeBuilding.setJsonPatrol(repeat(ApiUrlConfig.getJsonPatrol(), null));
  129. largeBuilding.setJsonPatrolPoint(repeat(ApiUrlConfig.getJsonPatrolPoint(), null));
  130. largeBuilding.setJsonPowerWaterMonth((repeat(ApiUrlConfig.getJsonPowerWaterMonth(), null)));
  131. largeBuilding.setJsonTarget(repeat(ApiUrlConfig.getJsonTarget(), null));
  132. largeBuilding.setJsonUseElectricity(repeat(ApiUrlConfig.getJsonUseElectricity(), null));
  133. largeBuilding.setJsonGreenElectricity(repeat(ApiUrlConfig.getJsonGreenElectricity(), null));
  134. largeBuilding.setJsonCarbon(repeat(ApiUrlConfig.getJsonCarbon(), null));
  135. largeBuilding.setJsonEnergyYear(repeat(ApiUrlConfig.getJsonEnergyYear(), null));
  136. largeBuilding.setJsonPowerYear(repeat(ApiUrlConfig.getJsonPowerYear(), null));
  137. largeBuilding.setJsonWaterYear(repeat(ApiUrlConfig.getJsonWaterYear(), null));
  138. if (platBuildingMapper.getCount() > 0){
  139. platBuildingMapper.updateBuilding(largeBuilding);
  140. }
  141. else {
  142. platBuildingMapper.insertBuilding(largeBuilding);
  143. }
  144. }
  145. /**
  146. * 办公能耗 空气概况
  147. * 该接口请求频率 5分钟一次
  148. */
  149. public void getRightBuildingDataSecondHalf(){
  150. LargeBuilding largeBuilding = new LargeBuilding();
  151. largeBuilding.setJsonAir(repeat(ApiUrlConfig.getJsonAir(), null));
  152. if (platBuildingMapper.getCount() > 0){
  153. platBuildingMapper.updateBuilding(largeBuilding);
  154. }
  155. else {
  156. platBuildingMapper.insertBuilding(largeBuilding);
  157. }
  158. }
  159. public String repeat(String url, String params){
  160. String result = null;
  161. try {
  162. if (StringUtils.isNotBlank(params)){
  163. String res = HttpUtils.sendGet(url, params);
  164. if (StringUtils.isNotBlank(res)){
  165. JSONObject jsonObject = JSONObject.parseObject(res);
  166. result = jsonObject.getString("data");
  167. }
  168. } else {
  169. String res = HttpUtils.sendGet(url);
  170. if (StringUtils.isNotBlank(res)){
  171. JSONObject jsonObject = JSONObject.parseObject(res);
  172. result = jsonObject.getString("data");
  173. }
  174. }
  175. } catch (Exception e){
  176. // 添加接口请求记录
  177. PlatApiRecord platApiRecord = new PlatApiRecord();
  178. platApiRecord.setApiUrl(url);
  179. platApiRecord.setApiResult(e.getMessage());
  180. iPlatApiRecordService.save(platApiRecord);
  181. return result;
  182. }
  183. // 添加接口请求记录
  184. PlatApiRecord platApiRecord = new PlatApiRecord();
  185. platApiRecord.setApiUrl(url);
  186. platApiRecord.setApiResult(result);
  187. iPlatApiRecordService.save(platApiRecord);
  188. return result;
  189. }
  190. }