2023-07-12 10:22:56 基本完成策略下发执行设备调控逻辑,根据终端上传结果来反馈给前端页面展示!

master
魔神煜修罗皇 2 years ago
parent d7c91997be
commit e772bdbb18
  1. 1
      psdc-business/src/main/java/com/psdc/entity/PsdcStrategyLog.java
  2. 3
      psdc-business/src/main/java/com/psdc/mapper/PsdcStrategyLogMapper.java
  3. 6
      psdc-business/src/main/java/com/psdc/mqtt/MyMQTTClient.java
  4. 2
      psdc-business/src/main/java/com/psdc/service/IPsdcStrategyLogService.java
  5. 18
      psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java
  6. 16
      psdc-business/src/main/java/com/psdc/service/impl/PsdcStrategyLogService.java
  7. 9
      psdc-business/src/main/resources/mapper/business/PsdcStrategyLogMapper.xml
  8. 6
      psdc-web/src/main/java/com/psdc/controller/control/ManualController.java
  9. 17
      psdc-web/src/main/java/com/psdc/controller/evaluate/PsdcStrategyLogController.java

@ -44,6 +44,7 @@ public class PsdcStrategyLog implements Serializable,Cloneable{
private String runHours; // 策略执行时长 private String runHours; // 策略执行时长
private String oneUseEnergy; // 单位时长用电 private String oneUseEnergy; // 单位时长用电
private Double sceneUseEnergy; // 总用电量 private Double sceneUseEnergy; // 总用电量
private String runSceneName; // 正在执行步骤名称
public PsdcStrategyLog(Long strategyCode, String startTime, String allSceneCodes,Integer runtimeStatus, Double inFrontAvgtemp, Double outFrontAvgtemp) { public PsdcStrategyLog(Long strategyCode, String startTime, String allSceneCodes,Integer runtimeStatus, Double inFrontAvgtemp, Double outFrontAvgtemp) {
this.strategyCode = strategyCode; this.strategyCode = strategyCode;

@ -30,6 +30,9 @@ public interface PsdcStrategyLogMapper {
PsdcStrategyLog selMyRunLog(@Param("runSta") Integer runSta); PsdcStrategyLog selMyRunLog(@Param("runSta") Integer runSta);
PsdcStrategyLog selMyRunStrategy(@Param("userId") Long userId,
@Param("code") Integer status);
/** /**
* 新增数据 * 新增数据
* *

@ -104,12 +104,12 @@ public class MyMQTTClient {
log.error("主题未定义"); log.error("主题未定义");
} }
MqttDeliveryToken token;//Delivery:配送 MqttDeliveryToken token;//Delivery:配送
//注意:这里一定要同步,否则,在多线程publish的情况下,线程会发生死锁 // 注意:这里一定要同步,否则,在多线程publish的情况下,线程会发生死锁
synchronized (this) { synchronized (this) {
try { try {
//也是发送到执行队列中,等待执行线程执行,将消息发送到消息中间件 // 也是发送到执行队列中,等待执行线程执行,将消息发送到消息中间件
token = mqttTopic.publish(message); token = mqttTopic.publish(message);
token.waitForCompletion(1000L); token.waitForCompletion(10000L);
} catch (MqttPersistenceException e) { } catch (MqttPersistenceException e) {
e.printStackTrace(); e.printStackTrace();
} catch (MqttException e) { } catch (MqttException e) {

@ -19,4 +19,6 @@ public interface IPsdcStrategyLogService {
PsdcStrategyLog selMyNewLog(Long code); PsdcStrategyLog selMyNewLog(Long code);
PsdcStrategyLog selMyThisLog(Integer code); PsdcStrategyLog selMyThisLog(Integer code);
PsdcStrategyLog selMyRunStrategy();
} }

@ -359,7 +359,7 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
log.info("策略id:{}", sceneCode); log.info("策略id:{}", sceneCode);
log.info("设备id:{}", deviceId); log.info("设备id:{}", deviceId);
log.info("控制指令:{}", data); log.info("控制指令:{}", data);
List<HashMap> ary = new ArrayList<>();
PsdcDevice psdcDevice = psdcDeviceMapper.queryById(deviceId); PsdcDevice psdcDevice = psdcDeviceMapper.queryById(deviceId);
if (psdcDevice == null) { if (psdcDevice == null) {
@ -376,6 +376,9 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
// 模式策略下属各场景步骤控制指令下发执行日志 // 模式策略下属各场景步骤控制指令下发执行日志
String controlKey = map.get("controlKey").toString(); String controlKey = map.get("controlKey").toString();
String controlValue = map.get("controlValue").toString(); String controlValue = map.get("controlValue").toString();
HashMap<String, Object> map2 = new HashMap<>();
map2.put(coverKey(controlKey), controlValue);
ary.add(map2);
if (controlValue.equals("1") || controlValue.equals("2")) { if (controlValue.equals("1") || controlValue.equals("2")) {
controlValue = coverStr("r", Integer.parseInt(controlValue)); controlValue = coverStr("r", Integer.parseInt(controlValue));
} }
@ -389,7 +392,7 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
jsonObject.put("timestamp",sdf2.format(new Date())); jsonObject.put("timestamp",sdf2.format(new Date()));
jsonObject.put("deviceId",deviceId); jsonObject.put("deviceId",deviceId);
jsonObject.put("sceneCode",sceneCode); jsonObject.put("sceneCode",sceneCode);
jsonObject.put("data",data); jsonObject.put("data",ary);
MID = MID + 1; MID = MID + 1;
myMQTTClient.publish(jsonObject.toJSONString(), "/hwj1/dntd/request/action/command", 2, false); 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)); // 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; return s;
} }
} }
private String coverKey(String s){
switch (s){
case "open":
return "Open";
case "close":
return "Close";
default:
return s;
}
}
} }

@ -1,5 +1,6 @@
package com.psdc.service.impl; package com.psdc.service.impl;
import com.psdc.entity.PsdcScene;
import com.psdc.entity.PsdcStrategy; import com.psdc.entity.PsdcStrategy;
import com.psdc.entity.PsdcStrategyLog; import com.psdc.entity.PsdcStrategyLog;
import com.psdc.entity.vo.SceneVo; import com.psdc.entity.vo.SceneVo;
@ -81,6 +82,21 @@ public class PsdcStrategyLogService implements IPsdcStrategyLogService {
return strategyLogMapper.selMyNewLog(SecurityUtils.getUserId(), thisCode); 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<PsdcScene> 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){ public String jssc(SimpleDateFormat dfs, String start, String end){
try { try {
Double d1 = Double.valueOf(dfs.parse(start).getTime()); Double d1 = Double.valueOf(dfs.parse(start).getTime());

@ -45,10 +45,17 @@
<select id="selMyNewLog" resultMap="PsdcStrategyLogMap"> <select id="selMyNewLog" resultMap="PsdcStrategyLogMap">
SELECT psl.* FROM `psdc_strategy_log` psl SELECT psl.* FROM `psdc_strategy_log` psl
Left Join psdc_strategy ps On ps.strategy_code = psl.strategy_code Left Join psdc_strategy ps On ps.strategy_code = psl.strategy_code
WHERE psl.strategy_code = ${code} And user_id = ${userId} Where psl.runtime_status = 2 And psl.strategy_code = ${code} And user_id = ${userId}
ORDER By start_time Desc LIMIT 0,1 ORDER By start_time Desc LIMIT 0,1
</select> </select>
<select id="selMyRunStrategy" resultMap="PsdcStrategyLogMap">
Select psl.*, ps.strategy_name From `psdc_strategy_log` psl
Left Join psdc_strategy ps On ps.strategy_code = psl.strategy_code
Where psl.runtime_status = #{code} And user_id = ${userId}
Order By start_time Desc LIMIT 0,1
</select>
<!-- 更新数据 --> <!-- 更新数据 -->
<update id="updateRunRes"> <update id="updateRunRes">
Update psdc_strategy_log Update psdc_strategy_log

@ -5,6 +5,7 @@ import com.psdc.core.controller.BaseController;
import com.psdc.core.domain.AjaxResult; import com.psdc.core.domain.AjaxResult;
import com.psdc.core.page.TableDataInfo; import com.psdc.core.page.TableDataInfo;
import com.psdc.entity.PsdcControlLog; import com.psdc.entity.PsdcControlLog;
import com.psdc.entity.PsdcStrategyLog;
import com.psdc.entity.vo.DeviceStatusVo; import com.psdc.entity.vo.DeviceStatusVo;
import com.psdc.service.IPsdcControlLogService; import com.psdc.service.IPsdcControlLogService;
import com.psdc.service.IPsdcDeviceService; import com.psdc.service.IPsdcDeviceService;
@ -139,10 +140,11 @@ public class ManualController extends BaseController {
@PreAuthorize("@ss.hasPermi('control:manual:temperature')") @PreAuthorize("@ss.hasPermi('control:manual:temperature')")
@PostMapping("/senceControl") @PostMapping("/senceControl")
public AjaxResult senceControl(@RequestBody List<JSONObject> jsonObjectList){ public AjaxResult senceControl(@RequestBody List<JSONObject> 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 ; AjaxResult ajaxResult ;
if ("1".equals(String.valueOf(status))){ if (null == sceneCode){
Long code = psdcDeviceService.sceneControl(jsonObjectList); Long code = psdcDeviceService.sceneControl(jsonObjectList);
String s = psdcStrategyLogService.selMyNewLog(code).getStrategyRunRes(); String s = psdcStrategyLogService.selMyNewLog(code).getStrategyRunRes();

@ -31,14 +31,25 @@ public class PsdcStrategyLogController{
@PreAuthorize("@ss.hasPermi('control:manual:strategy')") @PreAuthorize("@ss.hasPermi('control:manual:strategy')")
@PostMapping("/{strategyRes}") @PostMapping("/{strategyRes}")
public AjaxResult getMyStrategyLog(@RequestParam("strategyCode") Long strategyCode ){ public AjaxResult getMyStrategyLog(@RequestParam("strategyCode") Integer strategyCode ){
String s = psdcStrategyLogService.selMyNewLog(strategyCode).getStrategyRunRes(); if (null != strategyCode){
PsdcStrategyLog newLog = psdcStrategyLogService.selMyNewLog(Long.valueOf(strategyCode));
AjaxResult ajaxResult ; AjaxResult ajaxResult ;
if (null != s){ if (null != newLog){
String s = newLog.getStrategyRunRes();
ajaxResult = new AjaxResult(200, "查询成功", s.split(",")); ajaxResult = new AjaxResult(200, "查询成功", s.split(","));
} else { } else {
ajaxResult = new AjaxResult(200, "策略正在执行中,请耐心等待,谢谢配合!"); ajaxResult = new AjaxResult(200, "策略正在执行中,请耐心等待,谢谢配合!");
} }
return ajaxResult; return ajaxResult;
} else {
return AjaxResult.success();
}
}
@PreAuthorize("@ss.hasPermi('control:manual:strategy')")
@PostMapping("/newRunResScene")
public AjaxResult getMyStrategyNewLog(){
return AjaxResult.success(psdcStrategyLogService.selMyRunStrategy());
} }
} }
Loading…
Cancel
Save