Browse Source

能耗数据接口2

wwh 1 year ago
parent
commit
1f5b4c551c

+ 20 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/BaseFarmController.java

@@ -0,0 +1,20 @@
+package com.huimv.admin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-11-03
+ */
+@RestController
+@RequestMapping("/base-farm")
+public class BaseFarmController {
+
+}

+ 20 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/EnergyScreenController.java

@@ -0,0 +1,20 @@
+package com.huimv.admin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 大屏能耗弹窗 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-11-01
+ */
+@RestController
+@RequestMapping("/energy-screen")
+public class EnergyScreenController {
+
+}

+ 50 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/BaseFarm.java

@@ -0,0 +1,50 @@
+package com.huimv.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-11-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("base_farm")
+public class BaseFarm implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String farmName;
+
+    private String location;
+
+    private String frontLocation;
+
+    private Boolean rowStatus;
+
+    private String farmMenu;
+
+    private String farmTopMenu;
+
+    private String function;
+
+    /**
+     * 0显示 1不显示
+     */
+    private Integer isShow;
+
+
+}

+ 109 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/EnergyScreen.java

@@ -0,0 +1,109 @@
+package com.huimv.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 大屏能耗弹窗
+ * </p>
+ *
+ * @author author
+ * @since 2023-11-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("energy_screen")
+public class EnergyScreen implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 设备编码
+     */
+    private String deviceCode;
+
+    /**
+     * 安装位置
+     */
+    private String buildName;
+
+    /**
+     * 今日读数
+     */
+    private String todayRead;
+
+    /**
+     * 今日消耗
+     */
+    private String todayConsume;
+
+    /**
+     * 昨日消耗
+     */
+    private String yesterdayConsume;
+
+    /**
+     * 日差异
+     */
+    private String dayDifference;
+
+    /**
+     * 本周消耗
+     */
+    private String weekConsume;
+
+    /**
+     * 上周消耗
+     */
+    private String lastWeekConsume;
+
+    /**
+     * 本月消耗
+     */
+    private String monthConsume;
+
+    /**
+     * 上月消耗
+     */
+    private String lastMonthConsume;
+
+    /**
+     * 周差异
+     */
+    private String weekDifference;
+
+    /**
+     * 月差异
+     */
+    private String monthDifference;
+
+    /**
+     * 牧场编码
+     */
+    private Integer farmId;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createDate;
+
+    private Integer type;
+
+    private String farmName;
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/mapper/BaseFarmMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.mapper;
+
+import com.huimv.admin.entity.BaseFarm;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-11-03
+ */
+public interface BaseFarmMapper extends BaseMapper<BaseFarm> {
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/mapper/EnergyScreenMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.mapper;
+
+import com.huimv.admin.entity.EnergyScreen;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 大屏能耗弹窗 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-11-01
+ */
+public interface EnergyScreenMapper extends BaseMapper<EnergyScreen> {
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/service/IBaseFarmService.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.service;
+
+import com.huimv.admin.entity.BaseFarm;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-11-03
+ */
+public interface IBaseFarmService extends IService<BaseFarm> {
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/service/IEnergyScreenService.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.service;
+
+import com.huimv.admin.entity.EnergyScreen;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 大屏能耗弹窗 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-11-01
+ */
+public interface IEnergyScreenService extends IService<EnergyScreen> {
+
+}

+ 20 - 0
huimv-admin/src/main/java/com/huimv/admin/service/impl/BaseFarmServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.admin.service.impl;
+
+import com.huimv.admin.entity.BaseFarm;
+import com.huimv.admin.mapper.BaseFarmMapper;
+import com.huimv.admin.service.IBaseFarmService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-11-03
+ */
+@Service
+public class BaseFarmServiceImpl extends ServiceImpl<BaseFarmMapper, BaseFarm> implements IBaseFarmService {
+
+}

+ 20 - 0
huimv-admin/src/main/java/com/huimv/admin/service/impl/EnergyScreenServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.admin.service.impl;
+
+import com.huimv.admin.entity.EnergyScreen;
+import com.huimv.admin.mapper.EnergyScreenMapper;
+import com.huimv.admin.service.IEnergyScreenService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 大屏能耗弹窗 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-11-01
+ */
+@Service
+public class EnergyScreenServiceImpl extends ServiceImpl<EnergyScreenMapper, EnergyScreen> implements IEnergyScreenService {
+
+}

+ 245 - 0
huimv-admin/src/main/java/com/huimv/admin/timer/WaterAndElcTimer.java

@@ -0,0 +1,245 @@
+package com.huimv.admin.timer;
+
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.admin.common.utils.DataUill;
+import com.huimv.admin.entity.BillIsolate;
+import com.huimv.admin.entity.EnergyEnvDevice;
+import com.huimv.admin.entity.EnergyScreen;
+import com.huimv.admin.entity.vo.EnergyDataScreenVo;
+import com.huimv.admin.mapper.EnergyDataMapper;
+import com.huimv.admin.mapper.EnergyEnvDeviceMapper;
+import com.huimv.admin.mapper.EnergyScreenMapper;
+import com.huimv.admin.mapper.EnvDeviceMapper;
+import com.huimv.admin.service.IBillIsolateService;
+import com.huimv.admin.service.IBillPcrService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+@Configuration
+@EnableScheduling
+public class WaterAndElcTimer {
+
+    @Autowired
+    private EnergyEnvDeviceMapper envDeviceMapper;
+    @Autowired
+    private EnergyDataMapper dataMapper;
+    @Autowired
+    private EnergyScreenMapper screenMapper;
+
+
+    @Scheduled(cron = "0 59 * * * ? ")
+    private void getShenChan() throws Exception {
+        QueryWrapper<EnergyEnvDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", 26);
+        List<EnergyEnvDevice> envDevices = envDeviceMapper.selectList(queryWrapper);
+
+        Date timesmorning = DataUill.getTimesmorning();
+        DateTime dateTime = DateUtil.beginOfWeek(new Date());//本周
+        Date timesMonthmorning = DataUill.getTimesMonthmorning();//本月
+        Date dayStart = (Date) getYesterdayRange().get("startTime");
+        Date dayEnd = (Date) getYesterdayRange().get("stopTime");
+        Date weekStart = (Date) getLastWeekRange().get("startTime");
+        Date weekEnd = (Date) getLastWeekRange().get("stopTime");
+        Date monthStart = (Date) getLastMonthRange().get("startTime");
+        Date monthEnd = (Date) getLastMonthRange().get("stopTime");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+
+        for (EnergyEnvDevice envDevice : envDevices) {
+            EnergyDataScreenVo dataScreenVo = dataMapper.listDataAll(sdf.format(timesmorning), sdf.format(dateTime), sdf.format(timesMonthmorning),
+                    sdf.format(dayStart), sdf.format(dayEnd)
+                    , sdf.format(weekStart), sdf.format(weekEnd)
+                    , sdf.format(monthStart), sdf.format(monthEnd)
+                    , envDevice.getUnitId(), "26");
+
+            QueryWrapper<EnergyScreen> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.eq("farm_id", 26).ge("create_date", timesMonthmorning).eq("device_code", envDevice.getDeviceCode());
+            EnergyScreen energyScreen = screenMapper.selectOne(queryWrapper1);
+
+            if (ObjectUtil.isNotEmpty(energyScreen)) {
+                //说明今天的数据已经存在 后续只需要更新即可
+                if ("1".equals(envDevice.getRemark())) {
+                    //用水
+                    energyScreen.setCreateDate(new Date());
+                    energyScreen.setTodayRead(dataScreenVo.getWaterValueToday());
+                    energyScreen.setTodayConsume(dataScreenVo.getWaterValueTodayUsage());
+                    energyScreen.setYesterdayConsume(dataScreenVo.getWaterValueYesterdayUsage());
+                    energyScreen.setWeekConsume(dataScreenVo.getWaterValueThisWeekUsage());
+                    energyScreen.setLastWeekConsume(dataScreenVo.getWaterValueLastWeekUsage());
+                    energyScreen.setMonthConsume(dataScreenVo.getWaterValueThisMonthUsage());
+                    energyScreen.setLastMonthConsume(dataScreenVo.getWaterValueLastMonthUsage());
+                    double day2 = Double.parseDouble(dataScreenVo.getWaterValueTodayUsage());
+                    double day3 = Double.parseDouble(dataScreenVo.getWaterValueYesterdayUsage());
+                    double week1 = Double.parseDouble(dataScreenVo.getWaterValueThisWeekUsage());
+                    double week2 = Double.parseDouble(dataScreenVo.getWaterValueLastWeekUsage());
+                    double month1 = Double.parseDouble(dataScreenVo.getWaterValueThisMonthUsage());
+                    double month2 = Double.parseDouble(dataScreenVo.getWaterValueLastMonthUsage());
+                    DecimalFormat def = new DecimalFormat("0.00");
+                    String day4 = def.format(day2 - day3);
+                    String week3 = def.format(week1 - week2);
+                    String month3 = def.format(month1 - month2);
+                    energyScreen.setDayDifference(day4);
+                    energyScreen.setWeekDifference(week3);
+                    energyScreen.setMonthDifference(month3);
+                } else {
+                    //用电
+                    energyScreen.setCreateDate(new Date());
+                    energyScreen.setTodayRead(dataScreenVo.getElectricityValueToday());
+                    energyScreen.setTodayConsume(dataScreenVo.getElectricityValueTodayUsage());
+                    energyScreen.setYesterdayConsume(dataScreenVo.getElectricityValueYesterdayUsage());
+                    energyScreen.setWeekConsume(dataScreenVo.getElectricityValueThisWeekUsage());
+                    energyScreen.setLastWeekConsume(dataScreenVo.getElectricityValueLastWeekUsage());
+                    energyScreen.setMonthConsume(dataScreenVo.getElectricityValueThisMonthUsage());
+                    energyScreen.setLastMonthConsume(dataScreenVo.getElectricityValueLastMonthUsage());
+                    double day2 = Double.parseDouble(dataScreenVo.getElectricityValueTodayUsage());
+                    double day3 = Double.parseDouble(dataScreenVo.getElectricityValueYesterdayUsage());
+                    double week1 = Double.parseDouble(dataScreenVo.getElectricityValueThisWeekUsage());
+                    double week2 = Double.parseDouble(dataScreenVo.getElectricityValueLastWeekUsage());
+                    double month1 = Double.parseDouble(dataScreenVo.getElectricityValueThisMonthUsage());
+                    double month2 = Double.parseDouble(dataScreenVo.getElectricityValueLastMonthUsage());
+                    DecimalFormat def = new DecimalFormat("0.00");
+                    String day4 = def.format(day2 - day3);
+                    String week3 = def.format(week1 - week2);
+                    String month3 = def.format(month1 - month2);
+                    energyScreen.setDayDifference(day4);
+                    energyScreen.setWeekDifference(week3);
+                    energyScreen.setMonthDifference(month3);
+                }
+                screenMapper.updateById(energyScreen);
+            }else {
+                //添加一天的第一条数据
+                EnergyScreen screen = new EnergyScreen();
+                if ("1".equals(envDevice.getRemark())) {
+                //添加用水
+                    screen.setCreateDate(new Date());
+                    screen.setTodayRead(dataScreenVo.getWaterValueToday());
+                    screen.setTodayConsume(dataScreenVo.getWaterValueTodayUsage());
+                    screen.setYesterdayConsume(dataScreenVo.getWaterValueYesterdayUsage());
+                    screen.setWeekConsume(dataScreenVo.getWaterValueThisWeekUsage());
+                    screen.setLastWeekConsume(dataScreenVo.getWaterValueLastWeekUsage());
+                    screen.setMonthConsume(dataScreenVo.getWaterValueThisMonthUsage());
+                    screen.setLastMonthConsume(dataScreenVo.getWaterValueLastMonthUsage());
+                    double day2 = Double.parseDouble(dataScreenVo.getWaterValueTodayUsage());
+                    double day3 = Double.parseDouble(dataScreenVo.getWaterValueYesterdayUsage());
+                    double week1 = Double.parseDouble(dataScreenVo.getWaterValueThisWeekUsage());
+                    double week2 = Double.parseDouble(dataScreenVo.getWaterValueLastWeekUsage());
+                    double month1 = Double.parseDouble(dataScreenVo.getWaterValueThisMonthUsage());
+                    double month2 = Double.parseDouble(dataScreenVo.getWaterValueLastMonthUsage());
+                    DecimalFormat def = new DecimalFormat("0.00");
+                    String day4 = def.format(day2 - day3);
+                    String week3 = def.format(week1 - week2);
+                    String month3 = def.format(month1 - month2);
+                    screen.setDayDifference(day4);
+                    screen.setWeekDifference(week3);
+                    screen.setMonthDifference(month3);
+                    screen.setFarmId(26);
+                    screen.setBuildName(envDevice.getUnitName());
+                    screen.setDeviceCode(envDevice.getDeviceCode());
+                    screen.setType(1);
+                    screen.setFarmName("华统股份横路智慧牧场");
+                } else {
+                    screen.setCreateDate(new Date());
+                    screen.setTodayRead(dataScreenVo.getElectricityValueToday());
+                    screen.setTodayConsume(dataScreenVo.getElectricityValueTodayUsage());
+                    screen.setYesterdayConsume(dataScreenVo.getElectricityValueYesterdayUsage());
+                    screen.setWeekConsume(dataScreenVo.getElectricityValueThisWeekUsage());
+                    screen.setLastWeekConsume(dataScreenVo.getElectricityValueLastWeekUsage());
+                    screen.setMonthConsume(dataScreenVo.getElectricityValueThisMonthUsage());
+                    screen.setLastMonthConsume(dataScreenVo.getElectricityValueLastMonthUsage());
+                    double day2 = Double.parseDouble(dataScreenVo.getElectricityValueTodayUsage());
+                    double day3 = Double.parseDouble(dataScreenVo.getElectricityValueYesterdayUsage());
+                    double week1 = Double.parseDouble(dataScreenVo.getElectricityValueThisWeekUsage());
+                    double week2 = Double.parseDouble(dataScreenVo.getElectricityValueLastWeekUsage());
+                    double month1 = Double.parseDouble(dataScreenVo.getElectricityValueThisMonthUsage());
+                    double month2 = Double.parseDouble(dataScreenVo.getElectricityValueLastMonthUsage());
+                    DecimalFormat def = new DecimalFormat("0.00");
+                    String day4 = def.format(day2 - day3);
+                    String week3 = def.format(week1 - week2);
+                    String month3 = def.format(month1 - month2);
+                    screen.setDayDifference(day4);
+                    screen.setWeekDifference(week3);
+                    screen.setMonthDifference(month3);
+                    screen.setFarmId(26);
+                    screen.setBuildName(envDevice.getUnitName());
+                    screen.setDeviceCode(envDevice.getDeviceCode());
+                    screen.setType(2);
+                    screen.setFarmName("华统股份横路智慧牧场");
+                }
+                screenMapper.insert(screen);
+            }
+
+        }
+    }
+    /**
+     * 获取上周开始时间和结束时间
+     */
+    public static JSONObject getLastWeekRange() {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
+        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
+        calendar.add(Calendar.DAY_OF_WEEK, -7);
+        Date startTime = calendar.getTime();
+        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
+        calendar.add(Calendar.DAY_OF_WEEK, 6);
+        Date stopTime = calendar.getTime();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("startTime", startTime);
+        jsonObject.put("stopTime", stopTime);
+        return jsonObject;
+    }
+
+    /**
+     * 获取上月开始时间和结束时间
+     */
+    public static JSONObject getLastMonthRange() {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
+        calendar.add(Calendar.MONTH, -1);
+        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
+        Date startTime = calendar.getTime();
+        calendar.add(Calendar.DAY_OF_WEEK, 7);
+        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
+        //calendar.set(Calendar.HOUR_OF_DAY, 24);
+        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
+        Date stopTime = calendar.getTime();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("startTime", startTime);
+        jsonObject.put("stopTime", stopTime);
+        return jsonObject;
+    }
+
+    /**
+     * 获取昨天开始时间和结束时间
+     */
+    public static JSONObject getYesterdayRange() {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.MILLISECOND, 0);
+        calendar.set(Calendar.SECOND, 0);
+        calendar.set(Calendar.MINUTE, 0);
+        calendar.set(Calendar.HOUR_OF_DAY, -24);
+        Date startTime = calendar.getTime();
+        calendar.set(Calendar.MILLISECOND, 0);
+        calendar.set(Calendar.SECOND, 59);
+        calendar.set(Calendar.MINUTE, 59);
+        calendar.set(Calendar.HOUR_OF_DAY, 23);
+        Date stopTime = calendar.getTime();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("startTime", startTime);
+        jsonObject.put("stopTime", stopTime);
+        return jsonObject;
+    }
+}

+ 5 - 0
huimv-admin/src/main/resources/mapper/BaseFarmMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.admin.mapper.BaseFarmMapper">
+
+</mapper>

+ 5 - 0
huimv-admin/src/main/resources/mapper/EnergyScreenMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.admin.mapper.EnergyScreenMapper">
+
+</mapper>