From fb64be5a5a78592397a1fac22f05facb130b1ef7 Mon Sep 17 00:00:00 2001 From: zq Date: Thu, 15 Jan 2026 17:49:03 +0800 Subject: [PATCH] =?UTF-8?q?PCS=E5=85=B3=E6=9C=BA=E5=85=88=E5=90=91?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=8F=91=E9=80=81=E7=BB=99=E5=AE=9A=E5=8A=9F?= =?UTF-8?q?=E7=8E=87=E5=80=BC=E5=86=8D=E5=8F=91=E9=80=81=E5=85=B3=E6=9C=BA?= =?UTF-8?q?=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xzzn/quartz/task/StrategyPoller.java | 26 ++++++++++++++----- .../impl/EmsDeviceSettingServiceImpl.java | 19 +++++++++----- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/ems-quartz/src/main/java/com/xzzn/quartz/task/StrategyPoller.java b/ems-quartz/src/main/java/com/xzzn/quartz/task/StrategyPoller.java index 4fd3f71..93684cc 100644 --- a/ems-quartz/src/main/java/com/xzzn/quartz/task/StrategyPoller.java +++ b/ems-quartz/src/main/java/com/xzzn/quartz/task/StrategyPoller.java @@ -99,7 +99,10 @@ public class StrategyPoller { logger.error("运行策略{}轮询异常", strategyVo.getId(), e); return null; }) - .thenRun(() -> strategyLocks.remove(strategyId)); + .thenRun(() -> { + logger.info("运行策略{}轮询任务执行完成,释放锁", strategyVo.getId()); + strategyLocks.remove(strategyId); + }); } catch (Exception e) { logger.error("运行策略{}任务失败", strategyVo.getId(), e); strategyLocks.remove(strategyId); @@ -306,30 +309,39 @@ public class StrategyPoller { public List getSwitchDeviceWriteTags(EmsPcsSetting pcsSetting, String workStatus) { List writeTags = new ArrayList<>(); BigDecimal power; - WriteTagConfig writeTag = new WriteTagConfig(); - writeTag.setAddress(pcsSetting.getPointAddress()); + if (WorkStatus.NORMAL.getCode().equals(workStatus)) { - // 开机 + // 开机先发送开机指令再发送有功功率给定值 + WriteTagConfig writeTag = new WriteTagConfig(); + writeTag.setAddress(pcsSetting.getPointAddress()); writeTag.setValue(pcsSetting.getStartCommand()); + writeTags.add(writeTag); + power = pcsSetting.getStartPower(); } else { // 关机 - writeTag.setValue(pcsSetting.getStopCommand()); power = pcsSetting.getStopPower(); } - writeTags.add(writeTag); + JSONArray array = JSON.parseArray(pcsSetting.getClusterPointAddress()); for (int i = 0; i < pcsSetting.getClusterNum(); i++) { Object clusterPointAddress = array.get(i); WriteTagConfig clusterWriteTag = new WriteTagConfig(); clusterWriteTag.setAddress(String.valueOf(clusterPointAddress)); - // 电池簇PCS有功功率给定置0 + // 电池簇PCS有功功率给定默认置0 if (power == null) { power = BigDecimal.ZERO; } clusterWriteTag.setValue(power); writeTags.add(clusterWriteTag); } + if (WorkStatus.STOP.getCode().equals(workStatus)) { + // 关机先发送有功功率给定值再发送关机指令 + WriteTagConfig writeTag = new WriteTagConfig(); + writeTag.setAddress(pcsSetting.getPointAddress()); + writeTag.setValue(pcsSetting.getStopCommand()); + writeTags.add(writeTag); + } return writeTags; } diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsDeviceSettingServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsDeviceSettingServiceImpl.java index 546a5fc..23a3eee 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsDeviceSettingServiceImpl.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsDeviceSettingServiceImpl.java @@ -564,32 +564,39 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService public List getWriteTags(String workStatus, EmsPcsSetting pcsSetting) { List writeTags = new ArrayList<>(); BigDecimal power; - WriteTagConfig writeTag = new WriteTagConfig(); - writeTag.setAddress(pcsSetting.getPointAddress()); + if (WorkStatus.NORMAL.getCode().equals(workStatus)) { - // 开机 + // 开机先发送开机指令再发送有功功率给定值 + WriteTagConfig writeTag = new WriteTagConfig(); + writeTag.setAddress(pcsSetting.getPointAddress()); writeTag.setValue(pcsSetting.getStartCommand()); + writeTags.add(writeTag); power = pcsSetting.getStartPower(); } else if (WorkStatus.STOP.getCode().equals(workStatus)) { // 关机 - writeTag.setValue(pcsSetting.getStopCommand()); power = pcsSetting.getStopPower(); } else { throw new ServiceException("工作状态不合法"); } - writeTags.add(writeTag); JSONArray array = JSON.parseArray(pcsSetting.getClusterPointAddress()); for (int i = 0; i < pcsSetting.getClusterNum(); i++) { Object clusterPointAddress = array.get(i); WriteTagConfig clusterWriteTag = new WriteTagConfig(); clusterWriteTag.setAddress(String.valueOf(clusterPointAddress)); - // 电池簇PCS有功功率给定置0 + // 电池簇PCS有功功率给定默认置0 if (power == null) { power = BigDecimal.ZERO; } clusterWriteTag.setValue(power); writeTags.add(clusterWriteTag); } + if (WorkStatus.STOP.getCode().equals(workStatus)) { + // 关机先发送有功功率给定值再发送关机指令 + WriteTagConfig writeTag = new WriteTagConfig(); + writeTag.setAddress(pcsSetting.getPointAddress()); + writeTag.setValue(pcsSetting.getStopCommand()); + writeTags.add(writeTag); + } return writeTags; } }