| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- 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;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author ceshi
- * @since 2024-04-01
- */
- @Service
- public class ElectricEquipmentServiceImpl extends ServiceImpl<ElectricEquipmentMapper, ElectricEquipment> 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<ElectricEquipment> 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<ElectricEquipment> 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);
- }
- }
|