2021与蓝度共同重构项目,服务端
liuhaonan
2022-06-01 9c26c4f3c8ed2187fdb472280fc1d9182c327884
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
        }
    }
}