From c3a428f2ef9dec82c49e1c9d4f425d3950d79804 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期四, 28 十一月 2024 09:23:47 +0800 Subject: [PATCH] #定时充电 --- src/main/java/com/zy/asrs/domain/param/ShuttleTimedPowerRangeParam.java | 12 ++++ src/main/java/com/zy/asrs/task/ShuttleChargePowerScheduler.java | 132 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 144 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/zy/asrs/domain/param/ShuttleTimedPowerRangeParam.java b/src/main/java/com/zy/asrs/domain/param/ShuttleTimedPowerRangeParam.java new file mode 100644 index 0000000..2e4db5b --- /dev/null +++ b/src/main/java/com/zy/asrs/domain/param/ShuttleTimedPowerRangeParam.java @@ -0,0 +1,12 @@ +package com.zy.asrs.domain.param; + +import lombok.Data; + +@Data +public class ShuttleTimedPowerRangeParam { + + private Integer startTime; + + private Integer endTime; + +} diff --git a/src/main/java/com/zy/asrs/task/ShuttleChargePowerScheduler.java b/src/main/java/com/zy/asrs/task/ShuttleChargePowerScheduler.java new file mode 100644 index 0000000..51de897 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/ShuttleChargePowerScheduler.java @@ -0,0 +1,132 @@ +package com.zy.asrs.task; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.zy.asrs.domain.param.ShuttleTimedPowerRangeParam; +import com.zy.asrs.entity.BasShuttle; +import com.zy.asrs.service.BasShuttleService; +import com.zy.common.utils.RedisUtil; +import com.zy.system.entity.Config; +import com.zy.system.service.ConfigService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.time.LocalTime; +import java.util.List; + +@Component +@Slf4j +public class ShuttleChargePowerScheduler { + + @Autowired + private ConfigService configService; + @Autowired + private BasShuttleService basShuttleService; + @Autowired + private RedisUtil redisUtil; + + /** + * 灏忚溅鍏呯數绾胯嚜鍔ㄨ皟鑺� + * 姣�5閽熸墽琛屼竴娆� + */ + @Scheduled(cron = "0 5 * * * ? ") + public void run() { + boolean timedCharge = false; + Config timedChargeConfig = configService.selectOne(new EntityWrapper<Config>() + .eq("code", "timedCharge") + .eq("status", 1)); + if (timedChargeConfig != null) { + if("Y".equals(timedChargeConfig.getValue())) { + timedCharge = true; + } + } + + if(!timedCharge) { + return; + } + + Config timedChargeRangeConfig = configService.selectOne(new EntityWrapper<Config>() + .eq("code", "timedChargeRange") + .eq("status", 1)); + if (timedChargeRangeConfig == null) { + return; + } + + Integer timedChargePowerLine = 90; + Config timedChargePowerLineConfig = configService.selectOne(new EntityWrapper<Config>() + .eq("code", "timedChargePowerLine") + .eq("status", 1)); + if (timedChargePowerLineConfig == null) { + return; + } + timedChargePowerLine = Integer.parseInt(timedChargePowerLineConfig.getValue()); + + Integer shuttleDefaultChargePowerLine = 70; + Config shuttleDefaultChargePowerLineConfig = configService.selectOne(new EntityWrapper<Config>() + .eq("code", "shuttleDefaultChargePowerLine") + .eq("status", 1)); + if (shuttleDefaultChargePowerLineConfig != null) { + shuttleDefaultChargePowerLine = Integer.parseInt(shuttleDefaultChargePowerLineConfig.getValue()); + } + + List<ShuttleTimedPowerRangeParam> list = JSON.parseArray(timedChargeRangeConfig.getValue(), ShuttleTimedPowerRangeParam.class); + for (ShuttleTimedPowerRangeParam rangeParam : list) { + Object timedChargeObject = redisUtil.get("timedCharge"); + + LocalTime startTime = LocalTime.of(rangeParam.getStartTime(), 0); + LocalTime endTime = LocalTime.of(rangeParam.getEndTime(), 0); + boolean checkTime = checkTime(startTime, endTime); + if(!checkTime) { + if (timedChargeObject != null) { + subPower(shuttleDefaultChargePowerLine); + } + continue; + } + + if(timedChargeObject != null) { + continue; + } + + addPower(timedChargePowerLine); + } + + } + + public boolean checkTime(LocalTime startTime, LocalTime endTime) { + LocalTime now = LocalTime.now(); + return !now.isBefore(startTime) && !now.isAfter(endTime); + } + + public boolean addPower(Integer timedChargePowerLine) { + //璋冩暣鐢甸噺绾� + List<BasShuttle> shuttleList = basShuttleService.selectList(new EntityWrapper<BasShuttle>().ne("charge_line", timedChargePowerLine)); + if (shuttleList.isEmpty()) { + return false; + } + + BasShuttle basShuttle = shuttleList.get(0); + basShuttle.setChargeLine(timedChargePowerLine); + basShuttleService.updateById(basShuttle); + + redisUtil.set("timedCharge", shuttleList.size()); + return true; + } + + public boolean subPower(Integer shuttleDefaultChargePowerLine) { + List<BasShuttle> shuttleList = basShuttleService.selectList(new EntityWrapper<BasShuttle>()); + if (shuttleList.isEmpty()) { + return false; + } + + for (BasShuttle basShuttle : shuttleList) { + basShuttle.setChargeLine(shuttleDefaultChargePowerLine); + basShuttleService.updateById(basShuttle); + } + + redisUtil.del("timedCharge"); + return true; + } + +} -- Gitblit v1.9.1