From 3bc8c681a9bdf6b06c7f5f1f6a048c2563d49b35 Mon Sep 17 00:00:00 2001 From: XMnhwj_BackTechnologyDevelopment <3512363680@qq.com> Date: Fri, 14 Jul 2023 08:45:20 +0800 Subject: [PATCH] =?UTF-8?q?2023-07-14=2008:43:56=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=83=BD=E6=BA=90=E8=AF=84=E4=BB=B7=E7=AD=96?= =?UTF-8?q?=E7=95=A5=E6=89=A7=E8=A1=8C=E8=83=BD=E8=80=97=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=8A=9F=E8=83=BD!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../psdc/mqtt/savedata/DataAndPowerSave.java | 12 ++--- .../service/impl/PsdcDeviceServiceImpl.java | 6 +-- .../service/impl/PsdcStrategyLogService.java | 50 +++++++++++++------ .../evaluate/PsdcStrategyLogController.java | 3 +- 4 files changed, 45 insertions(+), 26 deletions(-) diff --git a/psdc-business/src/main/java/com/psdc/mqtt/savedata/DataAndPowerSave.java b/psdc-business/src/main/java/com/psdc/mqtt/savedata/DataAndPowerSave.java index bea1a6a..53b97fa 100644 --- a/psdc-business/src/main/java/com/psdc/mqtt/savedata/DataAndPowerSave.java +++ b/psdc-business/src/main/java/com/psdc/mqtt/savedata/DataAndPowerSave.java @@ -49,8 +49,6 @@ public class DataAndPowerSave { @Resource PsdcStatisticsYearMapper statisticsYearMapper; - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH"); - public Boolean saveDevRtData(JSONObject jsonObject) { Integer deviceId = jsonObject.getInteger("deviceId"); String timestamp = jsonObject.getString("timestamp"); @@ -164,15 +162,15 @@ public class DataAndPowerSave { if (null != strategyLog) { Boolean b2 = false; String[] runCodes = strategyLog.getRunSceneCodes().split(","); - String[] resList ; - if (null != strategyLog.getStrategyRunRes()){ + String[] resList; + if (null != strategyLog.getStrategyRunRes()) { resList = strategyLog.getStrategyRunRes().split(","); - if (runCodes.length == resList.length){ + if (runCodes.length == resList.length && "1".equals(resList[resList.length - 1])) { String[] split2 = strategyLog.getAllSceneCodes().split(","); Integer nextCode = Integer.valueOf(split2[runCodes.length]); List list2 = psdcSceneMapper.queryScenes2(Long.valueOf(nextCode)); PsdcSceneRes psc = list2.get(0); - if (String.valueOf(deviceId).equals(String.valueOf(psc.getJudgeDevice()))){ + if (String.valueOf(deviceId).equals(String.valueOf(psc.getJudgeDevice()))) { b2 = isOk2(psc.getIsJudge(), psc.getJudgeDevice(), psc.getJudgeElement(), psc.getJudgeData(), date1); if (b2) { synchronized (AppInfoRes.class) { @@ -182,7 +180,7 @@ public class DataAndPowerSave { } } } - } + } return true; } else { diff --git a/psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java b/psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java index f07d35b..bcc0830 100644 --- a/psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java +++ b/psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java @@ -383,7 +383,8 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService { controlValue = coverStr("r", Integer.parseInt(controlValue)); } String controlContext = ControlKeyEnum.getControlContext(controlKey); - + psdcControlLogMapper.insert(new PsdcControlLog(deviceId, psdcDevice.getDeviceName(), psdcDevice.getDeviceSn(), controlContext, controlValue, controlMethod, 2, "控制成功", controlBy)); + } // TODO 发送MQTT指令 MyMQTTClient myMQTTClient = new MyMQTTClient(); // 封装控制策略Json @@ -399,9 +400,8 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService { // psdcControlLogMapper.insert(new PsdcControlLog(deviceId,psdcDevice.getDeviceName(),psdcDevice.getDeviceSn(),controlContext,controlValue,controlMethod,3,"等待终端响应超时",controlBy)); // 发送成功 - psdcControlLogMapper.insert(new PsdcControlLog(deviceId, psdcDevice.getDeviceName(), psdcDevice.getDeviceSn(), controlContext, controlValue, controlMethod, 2, "控制成功", controlBy)); atomicInteger.incrementAndGet(); - } + return atomicInteger.get(); } diff --git a/psdc-business/src/main/java/com/psdc/service/impl/PsdcStrategyLogService.java b/psdc-business/src/main/java/com/psdc/service/impl/PsdcStrategyLogService.java index b64259c..ea0dfe5 100644 --- a/psdc-business/src/main/java/com/psdc/service/impl/PsdcStrategyLogService.java +++ b/psdc-business/src/main/java/com/psdc/service/impl/PsdcStrategyLogService.java @@ -54,18 +54,42 @@ public class PsdcStrategyLogService implements IPsdcStrategyLogService { if (null != strategyList && strategyList.size() > 0){ res = strategyList.get(0); String[] split = res.getScenes().split(","); - for (String s : split){ // 步骤层 + for (String s : split){ // 步骤层【1个步骤1个设备】 List sceneVos = sceneMapper.findSceneByUserAndSceneCode(userId, Long.parseLong(s), null); - for (SceneVo sv : sceneVos){ // 设备层 - Integer deviceId = sv.getDeviceId(); - Double energy = electricHtDataMapper.selTodayUseEnergy(deviceId, psl.getStartTime(), psl.getEndTime()); - strategyUseEnergy = strategyUseEnergy + energy; - } +// for (SceneVo sv : sceneVos) { // 设备层 +// Integer deviceId = sv.getDeviceId(); +// Double energy = electricHtDataMapper.selTodayUseEnergy(deviceId, psl.getStartTime(), psl.getEndTime()); +// strategyUseEnergy = strategyUseEnergy + energy; +// } + SceneVo sv = sceneVos.get(0); + Integer deviceId = sv.getDeviceId(); + Double energy = electricHtDataMapper.selTodayUseEnergy(deviceId, psl.getStartTime(), psl.getEndTime()); + strategyUseEnergy = strategyUseEnergy + energy; +// System.out.println("\n策略名称: " + psl.getStrategyName() + ",步骤名称: " + sv.getSceneName() +// + ",设备名称: " + sv.getDeviceName() + ",当前用能: " + energy + ",目前累计用能: " + strategyUseEnergy + "。\n"); + + } + + Double jssc = jssc(sdf, psl.getStartTime(), psl.getEndTime()); + String runHours = df.format(jssc); + if (".".equals(runHours.substring(0,1))){ + runHours= "0" + runHours; } - String runHours = jssc(sdf, psl.getStartTime(), psl.getEndTime()); + + // System.out.println("策略执行用时长: " + jssc + "。\n"); psl.setRunHours(runHours); psl.setSceneUseEnergy(strategyUseEnergy); - psl.setOneUseEnergy(df.format(strategyUseEnergy / Double.parseDouble(runHours))); + double v = 0.0; + if (jssc > 0.0){ + v = strategyUseEnergy / jssc; // 时长空判断处理 + } + // System.out.println("触发 = " + v + "\n"); + String s = df.format(v); + if (".".equals(s.substring(0,1))){ + s= "0" + s; + } + + psl.setOneUseEnergy(s); } } return logList; @@ -97,19 +121,15 @@ public class PsdcStrategyLogService implements IPsdcStrategyLogService { } } - public String jssc(SimpleDateFormat dfs, String start, String end){ + public Double jssc(SimpleDateFormat dfs, String start, String end){ try { Double d1 = Double.valueOf(dfs.parse(start).getTime()); Double d2 = Double.valueOf(dfs.parse(end).getTime()); Double between = (d2 - d1)/1000/3600; - String s = df.format(between); - if (".".equals(s.substring(0,1))){ - s= "0" + s; - } - return s; + return between; } catch (ParseException pe) { pe.printStackTrace(); - return "0L"; + return 0.0; } } } diff --git a/psdc-web/src/main/java/com/psdc/controller/evaluate/PsdcStrategyLogController.java b/psdc-web/src/main/java/com/psdc/controller/evaluate/PsdcStrategyLogController.java index 13a6217..ccc31d6 100644 --- a/psdc-web/src/main/java/com/psdc/controller/evaluate/PsdcStrategyLogController.java +++ b/psdc-web/src/main/java/com/psdc/controller/evaluate/PsdcStrategyLogController.java @@ -8,6 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import java.util.List; @@ -19,7 +20,7 @@ import java.util.List; @RestController @RequestMapping("/analyse/nhdb") public class PsdcStrategyLogController{ - @Autowired + @Resource private PsdcStrategyLogService psdcStrategyLogService; @PreAuthorize("@ss.hasPermi('analyse:nhdb')")