2021与蓝度共同重构项目,服务端
zhanzhiqin
2022-05-17 03267d87fade82578087123a1be515b6fde20bfb
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightService.java
@@ -23,6 +23,7 @@
import com.sandu.ximon.admin.param.LightRemarkParam;
import com.sandu.ximon.admin.redis.LightKey;
import com.sandu.ximon.admin.security.SecurityUtils;
import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils;
import com.sandu.ximon.admin.vo.ControlLightCommandVO;
import com.sandu.ximon.admin.vo.EquipmentInfomation;
import com.sandu.ximon.dao.bo.LightBo;
@@ -40,10 +41,9 @@
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -202,7 +202,9 @@
            Map<String, Object> map = new HashMap<>();
            try {
                map.put("deviceCode", param.getDeviceCode());
                WrapResponseCommonFrame<A5LightBrightnessRespInnerFrame> frame = MainBoardInvokeSyncService.getInstance().sendRRPC(param.getDeviceCode(), a5Frame, A5LightBrightnessRespInnerFrame.class);
                WrapResponseCommonFrame<A5LightBrightnessRespInnerFrame> frame
                        = MainBoardInvokeSyncService.getInstance().sendRRPC(param.getDeviceCode(), a5Frame, A5LightBrightnessRespInnerFrame.class);
                StoreOperationRecordsUtils.storeInnerFrameData(param.getDeviceCode(), "单灯帧-亮度控制", a5Frame, frame);
                if (frame == null) {
                    map.put("status", DeviceRespStatusEnums.OTHER_ERROR.getCode());
                    resultList.add(map);
@@ -225,6 +227,20 @@
            }
        }
        /**
         * 服务端批量控灯日志记录开始
         */
        String content = "{控灯请求:" + paramList.toString()
                + ", 控灯结果:" + resultList.toString() + "}";
        List<String> codeList = new ArrayList<>();
        for (LightControlParam bean : paramList) {
            codeList.add(bean.getDeviceCode());
        }
        StoreOperationRecordsUtils.storeOperationData(codeList, null, "服务端批量控灯", content);
        /**
         * 服务端批量控灯日志记录结束
         */
        return resultList;
    }
@@ -233,7 +249,7 @@
     *
     * @return
     */
    public Map controlEnergySaving() {
    public List controlEnergySaving() {
        //获取到正在执行的任务列表
        List<LightTaskDto> lightTaskDtos = SpringContextHolder.getBean(LightTaskService.class).listTask();
        LocalDateTime now = LocalDateTime.now();
@@ -248,7 +264,6 @@
        for (LightTaskDto lightTaskDto : lightTaskDtos) {
            List<Integer> weekList = lightTaskDto.getWeekList();
            System.out.println(weekList + "===========================");
            for (Integer one : weekList) {
                switch (one) {
                    case 1:
@@ -277,21 +292,29 @@
            }
        }
        Integer week = now.getDayOfWeek().getValue();
        Map map = new HashMap();
        //获取当前星期几 1-7
        int currentWeekValue = now.getDayOfWeek().getValue();
        Map map;
        List<Map> temp = new ArrayList<>();
        //获取日期 精确到天
        LocalDateTime localDateTime = now.with(LocalTime.MIN);
        for (int i = 1; i < 8; i++) {
            week--;
            if (week < 1) {
                week = 7;
            currentWeekValue--;
            if (currentWeekValue < 1) {
                currentWeekValue = 7;
            }
            map.put(i, getlist(week));
            map = new LinkedHashMap();
            map.put("time",localDateTime.minusDays(i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
            map.put("value", getlist(currentWeekValue));
            temp.add(map);
        }
        return map;
        return temp;
    }
@@ -300,7 +323,7 @@
     *
     * @return
     */
    public Map controlEnergy() {
    public List controlEnergy() {
        //获取到正在执行的任务列表
        List<LightTaskDto> lightTaskDtos = SpringContextHolder.getBean(LightTaskService.class).listTask();
        LocalDateTime now = LocalDateTime.now();
@@ -344,21 +367,26 @@
            }
        }
        Integer week = now.getDayOfWeek().getValue();
        Map map = new HashMap();
        Integer currentWeekValue = now.getDayOfWeek().getValue();
        Map map;
        List<Map> temp = new ArrayList<>();
        //获取当前日期  格式为yyyy-MM-dd
        LocalDateTime localDateTime = now.with(LocalTime.MIN);
        for (int i = 1; i < 8; i++) {
            week--;
            if (week < 1) {
                week = 7;
            currentWeekValue--;
            if (currentWeekValue < 1) {
                currentWeekValue = 7;
            }
            map.put(i, getlistEnergy(week));
            map = new LinkedHashMap();
            map.put("time",localDateTime.minusDays(i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
            map.put("value", getlistEnergy(currentWeekValue));
            temp.add(map);
        }
        return map;
        return temp;
    }
@@ -523,7 +551,7 @@
                    bigDecimalResult[0] = bigDecimalResult[0].add(bigDecimal);
                    if (controlLightCommandVOS.size() == (i + 1)) {
                        BigDecimal bigDecimal1 = calculateEnergySaving(controlLightCommandVOS.get(i), endTime);
                        System.out.println(bigDecimal1 + "===========================");
//                        System.out.println(bigDecimal1 + "===========================");
//                        saving.add(bigDecimal1);
                        bigDecimalResult[0] = bigDecimalResult[0].add(bigDecimal1);
                        break;
@@ -668,28 +696,33 @@
    public BigDecimal calculateEnergySaving(ControlLightCommandVO v1, ControlLightCommandVO v2) {
//        BigDecimal hour = BigDecimal.valueOf((v2.getHour() - v1.getHour()));
        BigDecimal hour;
//        BigDecimal hour;
        double hour;
        double min;
        //计算时长
        if (v2.getHour() > v1.getHour()) {
            hour = BigDecimal.valueOf((v2.getHour() - v1.getHour()));
            hour = v2.getHour() - v1.getHour();
        } else if (v2.getHour() < v1.getHour()) {
            hour = BigDecimal.valueOf((v2.getHour() + 24 - v1.getHour()));
            hour = 24 + (v2.getHour() - v1.getHour());
        } else {
            hour = BigDecimal.valueOf(0);
            hour = 0;
        }
//        BigDecimal min = BigDecimal.valueOf((v2.getMin() - v1.getMin()) / 60);
        BigDecimal min;
        //计算分钟
        if (v2.getMin() > v1.getMin()) {
            min = BigDecimal.valueOf((v2.getMin() - v1.getMin()) / 60);
            min = v2.getMin() - v1.getMin();
        } else if (v2.getMin() < v1.getMin()) {
            min = BigDecimal.valueOf((v2.getMin() + 60 - v1.getMin()) / 60);
            min = 60 + (v1.getMin() - v2.getMin());
            hour = hour - 1;
        } else {
            min = BigDecimal.valueOf(0);
            min = 0;
        }
        //计算时长
        BigDecimal totalTime = BigDecimal.valueOf(hour * 60 + min);
        BigDecimal totalTime = (hour.add(min));
        BigDecimal energySaving = BigDecimal.valueOf((100 - v1.getBrightness())).divide(BigDecimal.valueOf(100)).multiply(totalTime).divide(BigDecimal.valueOf(24));
        System.out.println(energySaving);
        //计算节能率 ( (1-v1.getBrightness()/100)*totalTime/3600 )   保留两位小数
        BigDecimal energySaving = BigDecimal.valueOf((1 - v1.getBrightness() / 100) * totalTime.doubleValue() / 3600).setScale(2, BigDecimal.ROUND_HALF_UP);
        System.out.println(energySaving + "节能率");
        return energySaving;
    }
@@ -710,6 +743,7 @@
            min = BigDecimal.valueOf((v2.getMin() - v1.getMin()) / 60);
        } else if (v2.getMin() < v1.getMin()) {
            min = BigDecimal.valueOf((v2.getMin() + 60 - v1.getMin()) / 60);
            hour = hour.subtract(BigDecimal.valueOf(1));
        } else {
            min = BigDecimal.valueOf(0);
        }