ElectricEquipmentServiceImpl.java 6.4 KB

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