From e772bdbb18085b6e67c2ed5a9ae21f20702031f5 Mon Sep 17 00:00:00 2001 From: XMnhwj_BackTechnologyDevelopment <3512363680@qq.com> Date: Wed, 12 Jul 2023 10:23:18 +0800 Subject: [PATCH] =?UTF-8?q?2023-07-12=2010:22:56=20=E5=9F=BA=E6=9C=AC?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=AD=96=E7=95=A5=E4=B8=8B=E5=8F=91=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E8=AE=BE=E5=A4=87=E8=B0=83=E6=8E=A7=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E6=A0=B9=E6=8D=AE=E7=BB=88=E7=AB=AF=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E6=9D=A5=E5=8F=8D=E9=A6=88=E7=BB=99=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E9=A1=B5=E9=9D=A2=E5=B1=95=E7=A4=BA!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/psdc/entity/PsdcStrategyLog.java | 1 + .../psdc/mapper/PsdcStrategyLogMapper.java | 3 +++ .../main/java/com/psdc/mqtt/MyMQTTClient.java | 6 ++--- .../psdc/service/IPsdcStrategyLogService.java | 2 ++ .../service/impl/PsdcDeviceServiceImpl.java | 18 +++++++++++-- .../service/impl/PsdcStrategyLogService.java | 16 ++++++++++++ .../mapper/business/PsdcStrategyLogMapper.xml | 9 ++++++- .../controller/control/ManualController.java | 6 +++-- .../evaluate/PsdcStrategyLogController.java | 25 +++++++++++++------ 9 files changed, 71 insertions(+), 15 deletions(-) diff --git a/psdc-business/src/main/java/com/psdc/entity/PsdcStrategyLog.java b/psdc-business/src/main/java/com/psdc/entity/PsdcStrategyLog.java index 31368e2..8486ef8 100644 --- a/psdc-business/src/main/java/com/psdc/entity/PsdcStrategyLog.java +++ b/psdc-business/src/main/java/com/psdc/entity/PsdcStrategyLog.java @@ -44,6 +44,7 @@ public class PsdcStrategyLog implements Serializable,Cloneable{ private String runHours; // 策略执行时长 private String oneUseEnergy; // 单位时长用电 private Double sceneUseEnergy; // 总用电量 + private String runSceneName; // 正在执行步骤名称 public PsdcStrategyLog(Long strategyCode, String startTime, String allSceneCodes,Integer runtimeStatus, Double inFrontAvgtemp, Double outFrontAvgtemp) { this.strategyCode = strategyCode; diff --git a/psdc-business/src/main/java/com/psdc/mapper/PsdcStrategyLogMapper.java b/psdc-business/src/main/java/com/psdc/mapper/PsdcStrategyLogMapper.java index 1df4ffe..269afc3 100644 --- a/psdc-business/src/main/java/com/psdc/mapper/PsdcStrategyLogMapper.java +++ b/psdc-business/src/main/java/com/psdc/mapper/PsdcStrategyLogMapper.java @@ -30,6 +30,9 @@ public interface PsdcStrategyLogMapper { PsdcStrategyLog selMyRunLog(@Param("runSta") Integer runSta); + PsdcStrategyLog selMyRunStrategy(@Param("userId") Long userId, + @Param("code") Integer status); + /** * 新增数据 * diff --git a/psdc-business/src/main/java/com/psdc/mqtt/MyMQTTClient.java b/psdc-business/src/main/java/com/psdc/mqtt/MyMQTTClient.java index 4fb1c4b..3f4566a 100644 --- a/psdc-business/src/main/java/com/psdc/mqtt/MyMQTTClient.java +++ b/psdc-business/src/main/java/com/psdc/mqtt/MyMQTTClient.java @@ -104,12 +104,12 @@ public class MyMQTTClient { log.error("主题未定义"); } MqttDeliveryToken token;//Delivery:配送 - //注意:这里一定要同步,否则,在多线程publish的情况下,线程会发生死锁 + // 注意:这里一定要同步,否则,在多线程publish的情况下,线程会发生死锁 synchronized (this) { try { - //也是发送到执行队列中,等待执行线程执行,将消息发送到消息中间件 + // 也是发送到执行队列中,等待执行线程执行,将消息发送到消息中间件 token = mqttTopic.publish(message); - token.waitForCompletion(1000L); + token.waitForCompletion(10000L); } catch (MqttPersistenceException e) { e.printStackTrace(); } catch (MqttException e) { diff --git a/psdc-business/src/main/java/com/psdc/service/IPsdcStrategyLogService.java b/psdc-business/src/main/java/com/psdc/service/IPsdcStrategyLogService.java index 663c222..1ffb9c6 100644 --- a/psdc-business/src/main/java/com/psdc/service/IPsdcStrategyLogService.java +++ b/psdc-business/src/main/java/com/psdc/service/IPsdcStrategyLogService.java @@ -19,4 +19,6 @@ public interface IPsdcStrategyLogService { PsdcStrategyLog selMyNewLog(Long code); PsdcStrategyLog selMyThisLog(Integer code); + + PsdcStrategyLog selMyRunStrategy(); } 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 e85c026..f07d35b 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 @@ -359,7 +359,7 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService { log.info("策略id:{}", sceneCode); log.info("设备id:{}", deviceId); log.info("控制指令:{}", data); - + List ary = new ArrayList<>(); PsdcDevice psdcDevice = psdcDeviceMapper.queryById(deviceId); if (psdcDevice == null) { @@ -376,6 +376,9 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService { // 模式策略下属各场景步骤控制指令下发执行日志 String controlKey = map.get("controlKey").toString(); String controlValue = map.get("controlValue").toString(); + HashMap map2 = new HashMap<>(); + map2.put(coverKey(controlKey), controlValue); + ary.add(map2); if (controlValue.equals("1") || controlValue.equals("2")) { controlValue = coverStr("r", Integer.parseInt(controlValue)); } @@ -389,7 +392,7 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService { jsonObject.put("timestamp",sdf2.format(new Date())); jsonObject.put("deviceId",deviceId); jsonObject.put("sceneCode",sceneCode); - jsonObject.put("data",data); + jsonObject.put("data",ary); MID = MID + 1; myMQTTClient.publish(jsonObject.toJSONString(), "/hwj1/dntd/request/action/command", 2, false); // psdcControlLogMapper.insert(new PsdcControlLog(deviceId,psdcDevice.getDeviceName(),psdcDevice.getDeviceSn(),controlContext,controlValue,controlMethod,2,"控制成功",controlBy)); @@ -656,4 +659,15 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService { return s; } } + + private String coverKey(String s){ + switch (s){ + case "open": + return "Open"; + case "close": + return "Close"; + default: + return s; + } + } } \ No newline at end of file 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 3acbd5b..b64259c 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 @@ -1,5 +1,6 @@ package com.psdc.service.impl; +import com.psdc.entity.PsdcScene; import com.psdc.entity.PsdcStrategy; import com.psdc.entity.PsdcStrategyLog; import com.psdc.entity.vo.SceneVo; @@ -81,6 +82,21 @@ public class PsdcStrategyLogService implements IPsdcStrategyLogService { return strategyLogMapper.selMyNewLog(SecurityUtils.getUserId(), thisCode); } + @Override + public PsdcStrategyLog selMyRunStrategy() { + PsdcStrategyLog strategyLog = strategyLogMapper.selMyRunStrategy(SecurityUtils.getUserId(), 2); + if (null != strategyLog){ + String[] split = strategyLog.getRunSceneCodes().split(","); + String code = split[split.length - 1]; + List scenes = sceneMapper.queryBySceneCode(Integer.parseInt(code)); + String name = scenes.get(0).getSceneName(); + strategyLog.setRunSceneName(name); + return strategyLog; + } else { + return null; + } + } + public String jssc(SimpleDateFormat dfs, String start, String end){ try { Double d1 = Double.valueOf(dfs.parse(start).getTime()); diff --git a/psdc-business/src/main/resources/mapper/business/PsdcStrategyLogMapper.xml b/psdc-business/src/main/resources/mapper/business/PsdcStrategyLogMapper.xml index 994b8f0..ed3d244 100644 --- a/psdc-business/src/main/resources/mapper/business/PsdcStrategyLogMapper.xml +++ b/psdc-business/src/main/resources/mapper/business/PsdcStrategyLogMapper.xml @@ -45,10 +45,17 @@ + + Update psdc_strategy_log diff --git a/psdc-web/src/main/java/com/psdc/controller/control/ManualController.java b/psdc-web/src/main/java/com/psdc/controller/control/ManualController.java index d769f67..e4c3d74 100644 --- a/psdc-web/src/main/java/com/psdc/controller/control/ManualController.java +++ b/psdc-web/src/main/java/com/psdc/controller/control/ManualController.java @@ -5,6 +5,7 @@ import com.psdc.core.controller.BaseController; import com.psdc.core.domain.AjaxResult; import com.psdc.core.page.TableDataInfo; import com.psdc.entity.PsdcControlLog; +import com.psdc.entity.PsdcStrategyLog; import com.psdc.entity.vo.DeviceStatusVo; import com.psdc.service.IPsdcControlLogService; import com.psdc.service.IPsdcDeviceService; @@ -139,10 +140,11 @@ public class ManualController extends BaseController { @PreAuthorize("@ss.hasPermi('control:manual:temperature')") @PostMapping("/senceControl") public AjaxResult senceControl(@RequestBody List jsonObjectList){ - Integer status = psdcStrategyLogService.selMyThisLog(jsonObjectList.get(0).getInteger("sceneCode")).getRuntimeStatus(); + PsdcStrategyLog sceneCode = psdcStrategyLogService.selMyThisLog(jsonObjectList.get(0).getInteger("sceneCode")); + // Integer status = sceneCode.getRuntimeStatus(); AjaxResult ajaxResult ; - if ("1".equals(String.valueOf(status))){ + if (null == sceneCode){ Long code = psdcDeviceService.sceneControl(jsonObjectList); String s = psdcStrategyLogService.selMyNewLog(code).getStrategyRunRes(); 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 ebf2b85..dfa4adf 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 @@ -31,14 +31,25 @@ public class PsdcStrategyLogController{ @PreAuthorize("@ss.hasPermi('control:manual:strategy')") @PostMapping("/{strategyRes}") - public AjaxResult getMyStrategyLog(@RequestParam("strategyCode") Long strategyCode ){ - String s = psdcStrategyLogService.selMyNewLog(strategyCode).getStrategyRunRes(); - AjaxResult ajaxResult ; - if (null != s){ - ajaxResult = new AjaxResult(200, "查询成功", s.split(",")); + public AjaxResult getMyStrategyLog(@RequestParam("strategyCode") Integer strategyCode ){ + if (null != strategyCode){ + PsdcStrategyLog newLog = psdcStrategyLogService.selMyNewLog(Long.valueOf(strategyCode)); + AjaxResult ajaxResult ; + if (null != newLog){ + String s = newLog.getStrategyRunRes(); + ajaxResult = new AjaxResult(200, "查询成功", s.split(",")); + } else { + ajaxResult = new AjaxResult(200, "策略正在执行中,请耐心等待,谢谢配合!"); + } + return ajaxResult; } else { - ajaxResult = new AjaxResult(200, "策略正在执行中,请耐心等待,谢谢配合!"); + return AjaxResult.success(); } - return ajaxResult; + } + + @PreAuthorize("@ss.hasPermi('control:manual:strategy')") + @PostMapping("/newRunResScene") + public AjaxResult getMyStrategyNewLog(){ + return AjaxResult.success(psdcStrategyLogService.selMyRunStrategy()); } } \ No newline at end of file