package com.template.services.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; 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.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 23 * * * ? ") @Transactional(rollbackFor = Exception.class) 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"); try { 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); // this.save(electricEquipment); } System.out.println("electricEquipments.size() = " + electricEquipments.size()); System.out.println("meterObj.size() = " + meterObj.size()); this.saveBatch(electricEquipments); }catch (Exception e){ e.printStackTrace(); } } // 计算电费 @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); } }