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; } }