package com.template.services.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.template.mapper.ElectricEquipmentMapper; import com.template.model.pojo.ElectricEquipment; import com.template.services.ElectricEquipmentService; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; import java.math.BigDecimal; import java.util.ArrayList; /** *

* 服务实现类 *

* * @author ceshi * @since 2024-04-01 */ @Service public class ElectricEquipmentServiceImpl extends ServiceImpl implements ElectricEquipmentService { /** * 获取所有房间的电表设备 */ // @Scheduled(cron = "0 34 * * * ? ") // 1 @Transactional(rollbackFor = Exception.class)//1 public void getHouseNumberEquipment() { String url = "http://172.16.20.87/api/wechat/main/meterQuery?meterType=1"; RestTemplate restTemplate = new RestTemplate(); String forObject = restTemplate.getForObject(url, String.class); JSONObject jsonObject = JSONObject.parseObject(forObject); // System.out.println("jsonObject = " + jsonObject); JSONArray meterObj = jsonObject.getJSONArray("meterObj"); ArrayList electricEquipments = new ArrayList<>(); for (int i = 0; i < meterObj.size(); i++) { JSONObject jsonObject1 = meterObj.getJSONObject(i); // ElectricEquipment electricEquipment = new ElectricEquipment(); // electricEquipment.setMeterId(jsonObject1.getString("meterId")); // electricEquipment.setRoomId(jsonObject1.getString("roomId")); // electricEquipment.setRoomNum(jsonObject1.getString("roomNum")); // electricEquipment.setMeterName(jsonObject1.getString("meterName")); // electricEquipments.add(electricEquipment); String roomNum = jsonObject1.getString("roomNum"); String roomId = jsonObject1.getString("roomId"); LambdaQueryWrapper wrapper=new LambdaQueryWrapper<>(); wrapper/*.eq(ElectricEquipment::getRoomNum,roomNum)*/ .eq(ElectricEquipment::getRoomId,roomId); ElectricEquipment electricEquipment = this.getOne(wrapper); if (ObjectUtils.isEmpty(electricEquipment)) { electricEquipment=new ElectricEquipment(); // electricEquipment.setRoomNum(roomNum); electricEquipment.setRoomId(roomId); } electricEquipment.setRoomNum(roomNum); electricEquipment.setMeterId(jsonObject1.getString("meterId")); electricEquipment.setMeterName(jsonObject1.getString("meterName")); electricEquipments.add(electricEquipment); } System.out.println("electricEquipments.size() = " + electricEquipments.size()); System.out.println("meterObj.size() = " + meterObj.size()); this.saveOrUpdateBatch(electricEquipments); } // 计算电费 @Override public JSONObject roomCostRecord(String roomId, String beginTime, String endTime) { JSONObject objectElectric = new JSONObject(); 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"; RestTemplate restTemplate = new RestTemplate(); String forObject = restTemplate.getForObject(url, String.class); JSONObject jsonObject = JSONObject.parseObject(forObject); JSONArray costObj = jsonObject.getJSONArray("costObj"); BigDecimal bigDecimalCost = new BigDecimal(0); BigDecimal bigDecimalConsume = new BigDecimal(0); if (ObjectUtils.isEmpty(costObj) && costObj.size() <= 0) { objectElectric.put("cost", bigDecimalCost); objectElectric.put("consume", bigDecimalConsume); return objectElectric; } for (int i = 0; i < costObj.size(); i++) { JSONObject jsonObject1 = costObj.getJSONObject(i); BigDecimal costTotal = jsonObject1.getBigDecimal("costTotal"); BigDecimal consumeTotal = jsonObject1.getBigDecimal("consumeTotal"); bigDecimalCost = bigDecimalCost.add(costTotal); bigDecimalConsume = bigDecimalConsume.add(consumeTotal); } objectElectric.put("cost", bigDecimalCost); objectElectric.put("consume", bigDecimalConsume); return objectElectric; } /** * 远程开电 * * @param electricEquipmentId * @return */ @Override public Boolean openMeterControl(String electricEquipmentId) { ElectricEquipment electricEquipment = this.getById(electricEquipmentId); if (ObjectUtils.isEmpty(electricEquipment)) { return false; } String meterId = electricEquipment.getMeterId(); String url = "http://172.16.20.87/api/wechat/main/meterControl?meterId=" + meterId + "&ifOpen=Y&meterType=1"; RestTemplate restTemplate = new RestTemplate(); String forObject = restTemplate.getForObject(url, String.class); JSONObject jsonObject = JSONObject.parseObject(forObject); JSONArray meterObj = jsonObject.getJSONArray("meterObj"); Boolean state = false; for (int i = 0; i < meterObj.size(); i++) { JSONObject object = meterObj.getJSONObject(i); String meterId1 = object.getString("meterId"); String opState = object.getString("opState"); if ("Y".equals(opState)) { state = true; } } return state; } /** * 关电 * * @param electricEquipmentId * @return */ @Override public Boolean closeMeterControl(String electricEquipmentId) { ElectricEquipment electricEquipment = this.getById(electricEquipmentId); if (ObjectUtils.isEmpty(electricEquipment)) { return false; } String meterId = electricEquipment.getMeterId(); String url = "http://172.16.20.87/api/wechat/main/meterControl?meterId=" + meterId + "&ifOpen=N&meterType=1"; RestTemplate restTemplate = new RestTemplate(); String forObject = restTemplate.getForObject(url, String.class); JSONObject jsonObject = JSONObject.parseObject(forObject); JSONArray meterObj = jsonObject.getJSONArray("meterObj"); Boolean state = false; for (int i = 0; i < meterObj.size(); i++) { JSONObject object = meterObj.getJSONObject(i); String meterId1 = object.getString("meterId"); String opState = object.getString("opState"); if ("Y".equals(opState)) { state = true; } } return state; } // @Scheduled(cron = "0 55 * * * ? ") public void test() { // JSONObject jsonObject = roomCostRecord("H1", "2024-04-02 08:10:10", "2024-04-03 07:00:00"); // System.out.println("jsonObject = " + jsonObject); Boolean aBoolean = openMeterControl("2"); System.out.println("aBoolean = " + aBoolean); } }