2021与蓝度共同重构项目,服务端
liuhaonan
2022-06-01 9c26c4f3c8ed2187fdb472280fc1d9182c327884
bug修复
已添加1个文件
已修改6个文件
218 ■■■■ 文件已修改
dao/src/main/java/com/sandu/ximon/dao/bo/LightTaskPoleRelationBo.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/domain/LightEnergyData.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/mapper/LightTaskPoleRelationMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/LightEnergyDataMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/LightTaskPoleRelationMapper.xml 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightEnergyDataService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskService.java 81 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/bo/LightTaskPoleRelationBo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
package com.sandu.ximon.dao.bo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.sandu.ximon.dao.domain.LightTaskPoleRelation;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class LightTaskPoleRelationBo extends LightTaskPoleRelation {
    /**
     * ç”¨æˆ·ID
     */
    private Long userId;
    /**
     * ä¸Šçº§å®¢æˆ·ID
     */
    private Long clientId;
    /**
     * ä»¥ä¸‹ä¸ºä»»åŠ¡ä¸­çš„æ•°æ®
     */
    /**
     * ä»»åŠ¡åç§°
     */
    private String taskName;
    /**
     * æ˜ŸæœŸå‡ ï¼Œä½è¿ç®—保存,1代表星期一,2星期二,4星期三,8星期四,16星期五,32星期六,64星期日
     */
    private Integer week;
    /**
     * å¼€ç¯å‘½ä»¤
     */
    private String openOrder;
    /**
     * å…³é—­ç¯å‘½ä»¤
     */
    private String closeOrder;
    /**
     * ç¯æŽ§å‘½ä»¤
     */
    private String controlOrder;
    /**
     * æŽ§ç¯åœ°å€
     */
    private String lightAdress = "FFFF";
}
dao/src/main/java/com/sandu/ximon/dao/domain/LightEnergyData.java
@@ -44,6 +44,11 @@
    private BigDecimal energySaving;
    /**
     * ç¯æ†id
     */
    private Long poleId;
    /**
     * ç”¨æˆ·id
     */
    private Long userId;
dao/src/main/java/com/sandu/ximon/dao/mapper/LightTaskPoleRelationMapper.java
@@ -1,5 +1,6 @@
package com.sandu.ximon.dao.mapper;
import com.sandu.ximon.dao.bo.LightTaskPoleRelationBo;
import com.sandu.ximon.dao.bo.LightTaskStatusAndPole;
import com.sandu.ximon.dao.domain.LightTaskPoleRelation;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -15,6 +16,8 @@
    List<LightTaskStatusAndPole> listPoleAndStatusIdByTaskId(Long taskId);
    List<LightTaskPoleRelationBo> test(List<Long> taskIdList);
}
dao/src/main/resources/mapper/LightEnergyDataMapper.xml
@@ -10,6 +10,7 @@
        <result property="ytdTime" column="ytd_time" jdbcType="VARCHAR"/>
        <result property="energy" column="energy" jdbcType="DOUBLE"/>
        <result property="energySaving" column="energy_saving" jdbcType="DOUBLE"/>
        <result property="poleId" column="pole_id" jdbcType="BIGINT"/>
        <result property="userId" column="user_id" jdbcType="BIGINT"/>
        <result property="clientId" column="client_id" jdbcType="BIGINT"/>
    </resultMap>
dao/src/main/resources/mapper/LightTaskPoleRelationMapper.xml
@@ -5,27 +5,47 @@
<mapper namespace="com.sandu.ximon.dao.mapper.LightTaskPoleRelationMapper">
    <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.LightTaskPoleRelation">
            <id property="id" column="id" jdbcType="BIGINT"/>
            <result property="taskId" column="task_id" jdbcType="BIGINT"/>
            <result property="poleId" column="pole_id" jdbcType="BIGINT"/>
            <result property="issueStatus" column="issue_status" jdbcType="INTEGER"/>
            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
        <id property="id" column="id" jdbcType="BIGINT"/>
        <result property="taskId" column="task_id" jdbcType="BIGINT"/>
        <result property="poleId" column="pole_id" jdbcType="BIGINT"/>
        <result property="issueStatus" column="issue_status" jdbcType="INTEGER"/>
        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
    </resultMap>
    <sql id="Base_Column_List">
        id,task_id,pole_id,
        id
        ,task_id,pole_id,
        issue_status,create_time,update_time
    </sql>
    <select id="listPoleAndStatusIdByTaskId" resultType="com.sandu.ximon.dao.bo.LightTaskStatusAndPole">
        SELECT
            t1.issue_status,
            t2.*
        t1.issue_status,
        t2.*
        FROM
            light_task_pole_relation t1
                LEFT JOIN pole t2 ON t1.pole_id = t2.id
        light_task_pole_relation t1
        LEFT JOIN pole t2 ON t1.pole_id = t2.id
        <where>
            AND t1.task_id = #{taskId}
        </where>
    </select>
    <select id="test" resultType="com.sandu.ximon.dao.bo.LightTaskPoleRelationBo">
        SELECT
        t1.*,
        t2.user_id, t2.client_id,
        t3.task_name, t3.week, t3.open_order, t3.close_order, t3.control_order, t3.light_adress
        FROM
        light_task_pole_relation t1
        LEFT JOIN pole t2 ON t1.pole_id = t2.id
        LEFT JOIN light_task t3 ON t3.task_id = t1.task_id
        <where>
            t1.issue_status=0
            AND
            t1.task_id IN
            <foreach collection="taskIdList" open="(" close=")" separator="," item="task_id">
                #{task_id}
            </foreach>
        </where>
    </select>
</mapper>
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightEnergyDataService.java
@@ -1,12 +1,9 @@
package com.sandu.ximon.admin.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.sandu.common.service.impl.BaseServiceImpl;
import com.sandu.common.util.SpringContextHolder;
import com.sandu.ximon.admin.security.SecurityUtils;
import com.sandu.ximon.dao.domain.LightEnergyData;
import com.sandu.ximon.dao.domain.LightTaskPoleRelation;
import com.sandu.ximon.dao.mapper.LightEnergyDataMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@@ -48,32 +45,9 @@
            BigDecimal[] energySavingAll = {new BigDecimal(0.00)};
            list.forEach(
                    bean -> {
                        int lightSize = SpringContextHolder.getBean(LightTaskPoleRelationService.class)
                                .list(Wrappers.lambdaQuery(LightTaskPoleRelation.class)
                                        .eq(LightTaskPoleRelation::getTaskId, bean.getTaskId()).eq(LightTaskPoleRelation::getIssueStatus, 0)).size();
                        energyAll[0] = energyAll[0].add(bean.getEnergy());
                        energySavingAll[0] = energySavingAll[0].add(bean.getEnergySaving());
                        BigDecimal energy;
                        BigDecimal energySaving;
                        if (lightSize == 0) {
                            energy = new BigDecimal(0);
                            energySaving = new BigDecimal(1);
                        } else {
                            if (bean.getEnergy().equals(0.00)) {
                                energy = new BigDecimal(0);
                                energySaving = new BigDecimal(1);
                            } else if (bean.getEnergySaving().equals(0.00)) {
                                energy = new BigDecimal(0);
                                energySaving = new BigDecimal(1);
                            } else {
                                energy = bean.getEnergy().multiply(new BigDecimal(lightSize)).setScale(2, BigDecimal.ROUND_HALF_UP);
                                energySaving = bean.getEnergySaving().divide(new BigDecimal(lightSize)).setScale(2, BigDecimal.ROUND_HALF_UP);
                            }
                        }
                        energyAll[0] = energyAll[0].add(energy);
                        energySavingAll[0] = energySavingAll[0].add(energySaving);
                    });
            Map map = new LinkedHashMap();
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskService.java
@@ -29,6 +29,7 @@
import com.sandu.ximon.admin.security.SecurityUtils;
import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils;
import com.sandu.ximon.admin.utils.TaskOrderUtil;
import com.sandu.ximon.dao.bo.LightTaskPoleRelationBo;
import com.sandu.ximon.dao.bo.LightTaskStatusAndPole;
import com.sandu.ximon.dao.domain.LightEnergyData;
import com.sandu.ximon.dao.domain.LightTask;
@@ -37,6 +38,7 @@
import com.sandu.ximon.dao.enums.DeviceRespStatusEnums;
import com.sandu.ximon.dao.enums.OrderByEnums;
import com.sandu.ximon.dao.mapper.LightTaskMapper;
import com.sandu.ximon.dao.mapper.LightTaskPoleRelationMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@@ -665,35 +667,66 @@
     */
    public void energy() {
        List<LightTask> lightTasks = list(Wrappers.lambdaQuery(LightTask.class));
        for (LightTask lightTask : lightTasks) {
            List<LightTaskPoleRelation> list = SpringContextHolder.getBean(LightTaskPoleRelationService.class).list(Wrappers.lambdaQuery(LightTaskPoleRelation.class).eq(LightTaskPoleRelation::getTaskId, lightTask.getTaskId()));
            LightTaskDto lightTaskDto = new LightTaskDto();
            BeanUtils.copyProperties(lightTask, lightTaskDto);
            lightTaskDto.setWeekList(TaskOrderUtil.parseLightWeek2List(lightTask.getWeek()));
        List<Long> taskIdList = new ArrayList<>();
        for (LightTask bean : lightTasks) {
            taskIdList.add(bean.getTaskId());
        }
        if (taskIdList.size() != 0) {
            List<LightTaskPoleRelationBo> list = SpringContextHolder.getBean(LightTaskPoleRelationMapper.class).test(taskIdList);
            for (LightTaskPoleRelationBo bean : list) {
            BigDecimal energySaving = SpringContextHolder.getBean(LightService.class).jisuan(lightTaskDto);
            BigDecimal energy = SpringContextHolder.getBean(LightService.class).jisuanEnergy(lightTaskDto);
                LightTaskDto lightTaskDto = new LightTaskDto();
                //TODO
                BeanUtils.copyProperties(bean, lightTaskDto);
                lightTaskDto.setWeekList(TaskOrderUtil.parseLightWeek2List(bean.getWeek()));
                BigDecimal energySaving;
                BigDecimal energy;
                //获取昨天的星期数
                LocalDateTime now = LocalDateTime.now();
                LocalDateTime yesterday = now.minusDays(1);
                int week = yesterday.getDayOfWeek().getValue();
                if (!list.isEmpty()) {
                    //有绑定灯杆  è¿›è¡Œè®¡ç®—
                    if (lightTaskDto.getWeekList().contains(week)) {
                        //任务有该星期数  è®¡ç®—
                        energySaving = SpringContextHolder.getBean(LightService.class).jisuan(lightTaskDto);
                        energy = SpringContextHolder.getBean(LightService.class).jisuanEnergy(lightTaskDto);
                    } else {
                        //任务无该星期数  è¿”回
                        energySaving = new BigDecimal(1);
                        energy = BigDecimal.ZERO;
                    }
                    for (int i = 0; i < list.size(); i++) {
                        LightTaskPoleRelation relation = list.get(i);
                        if (relation.getIssueStatus() != 0) {
                            //任务下发失败  è¿”回
                            energySaving = new BigDecimal(1);
                            energy = BigDecimal.ZERO;
                        }
                    }
                } else {
                    //未绑定灯杆  ç›´æŽ¥è¿”回
                    energySaving = new BigDecimal(1);
                    energy = BigDecimal.ZERO;
                }
            //获取昨天的星期数
            LocalDateTime now = LocalDateTime.now();
            LocalDateTime yesterday = now.minusDays(1);
                /**
                 * å­˜å‚¨æ•°æ®
                 */
                LightEnergyData lightEnergyData = new LightEnergyData();
                lightEnergyData.setTaskId(bean.getTaskId());
                lightEnergyData.setYtdTime(yesterday.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                lightEnergyData.setEnergySaving(energySaving);
                lightEnergyData.setEnergy(energy);
                lightEnergyData.setUserId(bean.getUserId());
                lightEnergyData.setClientId(bean.getClientId());
                lightEnergyData.setPoleId(bean.getPoleId());
                //保存能耗数据到数据库
                lightEnergyDataService.save(lightEnergyData);
            }
            LightEnergyData lightEnergyData = new LightEnergyData();
            lightEnergyData.setTaskId(lightTask.getTaskId());
            lightEnergyData.setYtdTime(yesterday.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
            lightEnergyData.setEnergySaving(energySaving);
            lightEnergyData.setEnergy(energy);
            lightEnergyData.setUserId(lightTask.getUserId());
            lightEnergyData.setClientId(lightTask.getClientId());
            //保存能耗数据到数据库
            lightEnergyDataService.save(lightEnergyData);
            System.out.println(lightEnergyData + "---------------");
            //ID   ä»»åŠ¡id
        }
    }
}