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