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