ElectricEquipmentServiceImpl.java 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. package com.template.services.impl;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.conditions.Wrapper;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
  7. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  8. import com.template.mapper.ElectricEquipmentMapper;
  9. import com.template.model.pojo.ElectricEquipment;
  10. import com.template.services.ElectricEquipmentService;
  11. import org.springframework.scheduling.annotation.Scheduled;
  12. import org.springframework.stereotype.Service;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import org.springframework.web.client.RestTemplate;
  15. import java.math.BigDecimal;
  16. import java.util.ArrayList;
  17. /**
  18. * <p>
  19. * 服务实现类
  20. * </p>
  21. *
  22. * @author ceshi
  23. * @since 2024-04-01
  24. */
  25. @Service
  26. public class ElectricEquipmentServiceImpl extends ServiceImpl<ElectricEquipmentMapper, ElectricEquipment> implements ElectricEquipmentService {
  27. /**
  28. * 获取所有房间的电表设备
  29. */
  30. // @Scheduled(cron = "0 34 * * * ? ")
  31. // 1
  32. @Transactional(rollbackFor = Exception.class)//1
  33. public void getHouseNumberEquipment() {
  34. String url = "http://172.16.20.87/api/wechat/main/meterQuery?meterType=1";
  35. RestTemplate restTemplate = new RestTemplate();
  36. String forObject = restTemplate.getForObject(url, String.class);
  37. JSONObject jsonObject = JSONObject.parseObject(forObject);
  38. // System.out.println("jsonObject = " + jsonObject);
  39. JSONArray meterObj = jsonObject.getJSONArray("meterObj");
  40. ArrayList<ElectricEquipment> electricEquipments = new ArrayList<>();
  41. for (int i = 0; i < meterObj.size(); i++) {
  42. JSONObject jsonObject1 = meterObj.getJSONObject(i);
  43. // ElectricEquipment electricEquipment = new ElectricEquipment();
  44. // electricEquipment.setMeterId(jsonObject1.getString("meterId"));
  45. // electricEquipment.setRoomId(jsonObject1.getString("roomId"));
  46. // electricEquipment.setRoomNum(jsonObject1.getString("roomNum"));
  47. // electricEquipment.setMeterName(jsonObject1.getString("meterName"));
  48. // electricEquipments.add(electricEquipment);
  49. String roomNum = jsonObject1.getString("roomNum");
  50. String roomId = jsonObject1.getString("roomId");
  51. LambdaQueryWrapper<ElectricEquipment> wrapper=new LambdaQueryWrapper<>();
  52. wrapper/*.eq(ElectricEquipment::getRoomNum,roomNum)*/
  53. .eq(ElectricEquipment::getRoomId,roomId);
  54. ElectricEquipment electricEquipment = this.getOne(wrapper);
  55. if (ObjectUtils.isEmpty(electricEquipment)) {
  56. electricEquipment=new ElectricEquipment();
  57. // electricEquipment.setRoomNum(roomNum);
  58. electricEquipment.setRoomId(roomId);
  59. }
  60. electricEquipment.setRoomNum(roomNum);
  61. electricEquipment.setMeterId(jsonObject1.getString("meterId"));
  62. electricEquipment.setMeterName(jsonObject1.getString("meterName"));
  63. electricEquipments.add(electricEquipment);
  64. }
  65. System.out.println("electricEquipments.size() = " + electricEquipments.size());
  66. System.out.println("meterObj.size() = " + meterObj.size());
  67. this.saveOrUpdateBatch(electricEquipments);
  68. }
  69. // 计算电费
  70. @Override
  71. public JSONObject roomCostRecord(String roomId, String beginTime, String endTime) {
  72. JSONObject objectElectric = new JSONObject();
  73. String url = "http://172.16.20.87/api/wechat/main/roomCostRecord?roomId=" + roomId + "&beginTime=" + beginTime + "&endTime=" + endTime + "&pageNumber=1&pageSize=1000&dataType=0&costType=0";
  74. RestTemplate restTemplate = new RestTemplate();
  75. String forObject = restTemplate.getForObject(url, String.class);
  76. JSONObject jsonObject = JSONObject.parseObject(forObject);
  77. JSONArray costObj = jsonObject.getJSONArray("costObj");
  78. BigDecimal bigDecimalCost = new BigDecimal(0);
  79. BigDecimal bigDecimalConsume = new BigDecimal(0);
  80. if (ObjectUtils.isEmpty(costObj) && costObj.size() <= 0) {
  81. objectElectric.put("cost", bigDecimalCost);
  82. objectElectric.put("consume", bigDecimalConsume);
  83. return objectElectric;
  84. }
  85. for (int i = 0; i < costObj.size(); i++) {
  86. JSONObject jsonObject1 = costObj.getJSONObject(i);
  87. BigDecimal costTotal = jsonObject1.getBigDecimal("costTotal");
  88. BigDecimal consumeTotal = jsonObject1.getBigDecimal("consumeTotal");
  89. bigDecimalCost = bigDecimalCost.add(costTotal);
  90. bigDecimalConsume = bigDecimalConsume.add(consumeTotal);
  91. }
  92. objectElectric.put("cost", bigDecimalCost);
  93. objectElectric.put("consume", bigDecimalConsume);
  94. return objectElectric;
  95. }
  96. /**
  97. * 远程开电
  98. *
  99. * @param electricEquipmentId
  100. * @return
  101. */
  102. @Override
  103. public Boolean openMeterControl(String electricEquipmentId) {
  104. ElectricEquipment electricEquipment = this.getById(electricEquipmentId);
  105. if (ObjectUtils.isEmpty(electricEquipment)) {
  106. return false;
  107. }
  108. String meterId = electricEquipment.getMeterId();
  109. String url = "http://172.16.20.87/api/wechat/main/meterControl?meterId=" + meterId + "&ifOpen=Y&meterType=1";
  110. RestTemplate restTemplate = new RestTemplate();
  111. String forObject = restTemplate.getForObject(url, String.class);
  112. JSONObject jsonObject = JSONObject.parseObject(forObject);
  113. JSONArray meterObj = jsonObject.getJSONArray("meterObj");
  114. Boolean state = false;
  115. for (int i = 0; i < meterObj.size(); i++) {
  116. JSONObject object = meterObj.getJSONObject(i);
  117. String meterId1 = object.getString("meterId");
  118. String opState = object.getString("opState");
  119. if ("Y".equals(opState)) {
  120. state = true;
  121. }
  122. }
  123. return state;
  124. }
  125. /**
  126. * 关电
  127. *
  128. * @param electricEquipmentId
  129. * @return
  130. */
  131. @Override
  132. public Boolean closeMeterControl(String electricEquipmentId) {
  133. ElectricEquipment electricEquipment = this.getById(electricEquipmentId);
  134. if (ObjectUtils.isEmpty(electricEquipment)) {
  135. return false;
  136. }
  137. String meterId = electricEquipment.getMeterId();
  138. String url = "http://172.16.20.87/api/wechat/main/meterControl?meterId=" + meterId + "&ifOpen=N&meterType=1";
  139. RestTemplate restTemplate = new RestTemplate();
  140. String forObject = restTemplate.getForObject(url, String.class);
  141. JSONObject jsonObject = JSONObject.parseObject(forObject);
  142. JSONArray meterObj = jsonObject.getJSONArray("meterObj");
  143. Boolean state = false;
  144. for (int i = 0; i < meterObj.size(); i++) {
  145. JSONObject object = meterObj.getJSONObject(i);
  146. String meterId1 = object.getString("meterId");
  147. String opState = object.getString("opState");
  148. if ("Y".equals(opState)) {
  149. state = true;
  150. }
  151. }
  152. return state;
  153. }
  154. // @Scheduled(cron = "0 55 * * * ? ")
  155. public void test() {
  156. // JSONObject jsonObject = roomCostRecord("H1", "2024-04-02 08:10:10", "2024-04-03 07:00:00");
  157. // System.out.println("jsonObject = " + jsonObject);
  158. Boolean aBoolean = openMeterControl("2");
  159. System.out.println("aBoolean = " + aBoolean);
  160. }
  161. }