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. 25
      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 oneUseEnergy; // 单位时长用电
private Double sceneUseEnergy; // 总用电量
private String runSceneName; // 正在执行步骤名称
public PsdcStrategyLog(Long strategyCode, String startTime, String allSceneCodes,Integer runtimeStatus, Double inFrontAvgtemp, Double outFrontAvgtemp) {
this.strategyCode = strategyCode;

@ -30,6 +30,9 @@ public interface PsdcStrategyLogMapper {
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("主题未定义");
}
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) {

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

@ -359,7 +359,7 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
log.info("策略id:{}", sceneCode);
log.info("设备id:{}", deviceId);
log.info("控制指令:{}", data);
List<HashMap> 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<String, Object> 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;
}
}
}

@ -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<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){
try {
Double d1 = Double.valueOf(dfs.parse(start).getTime());

@ -45,10 +45,17 @@
<select id="selMyNewLog" resultMap="PsdcStrategyLogMap">
SELECT psl.* FROM `psdc_strategy_log` psl
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
</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 psdc_strategy_log

@ -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<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 ;
if ("1".equals(String.valueOf(status))){
if (null == sceneCode){
Long code = psdcDeviceService.sceneControl(jsonObjectList);
String s = psdcStrategyLogService.selMyNewLog(code).getStrategyRunRes();

@ -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());
}
}
Loading…
Cancel
Save