2023-06-25 09:52:36 优化完善策略执行日志信息入库功能!

master
魔神煜修罗皇 2 years ago
parent d06a62b721
commit 462e722394
  1. 8
      psdc-business/src/main/java/com/psdc/mapper/PsdcSceneMapper.java
  2. 3
      psdc-business/src/main/java/com/psdc/service/IPsdcDeviceService.java
  3. 40
      psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java
  4. 51
      psdc-business/src/main/java/com/psdc/service/impl/PsdcSceneServiceImpl.java
  5. 2
      psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml
  6. 6
      psdc-common/src/main/java/com/psdc/enums/ControlKeyEnum.java
  7. 6
      psdc-web/src/main/java/com/psdc/controller/control/ManualController.java

@ -55,13 +55,11 @@ public interface PsdcSceneMapper{
* @return 影响行数
*/
int update(PsdcScene psdcScene);
/**
* 通过主键删除数据
*
* @param sceneId 主键
/**
* @return 影响行数
*/
int deleteById(Integer sceneId);
int deleteById();
/**
* 根据用户ID查询策略信息

@ -1,5 +1,6 @@
package com.psdc.service;
import com.alibaba.fastjson2.JSONObject;
import com.psdc.entity.PsdcDevice;
import com.psdc.entity.res.PsdcDeviceInfoRes;
import com.psdc.entity.vo.DeviceStatusVo;
@ -97,6 +98,8 @@ public interface IPsdcDeviceService {
*/
int setTemperature(Integer deviceId, List<HashMap> data, String controlBym,Integer controlMethod);
Integer sceneControl(List<JSONObject> jsonObjectList);
/**
* 设置单条温度指令
* @param deviceId

@ -1,5 +1,6 @@
package com.psdc.service.impl;
import com.alibaba.fastjson2.JSONObject;
import com.psdc.entity.PsdcControlLog;
import com.psdc.entity.PsdcDevice;
import com.psdc.entity.PsdcScene;
@ -110,10 +111,11 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
/**
* 封装设备信息
* @param data 日期
*
* @param data 日期
* @param deviceId 设备Id
* @param ary
* @param mv 模型参数
* @param mv 模型参数
*/
private void packDevInfos(Date data, Integer deviceId, List<Map> ary, ModelVo mv) {
PsdcThermometerDataRes thermometerDataRes = thermometerRtdataMapper.selTempByDevId(deviceId, sdf.format(data));
@ -313,6 +315,9 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
String controlKey = map.get("controlKey").toString();
String controlValue = map.get("controlValue").toString();
if (controlValue.equals("1") || controlValue.equals("2")){
controlValue = coverStr("r", Integer.parseInt(controlValue));
}
String controlContext = ControlKeyEnum.getControlContext(controlKey);
// TODO 发送MQTT指令
// psdcControlLogMapper.insert(new PsdcControlLog(deviceId,psdcDevice.getDeviceName(),psdcDevice.getDeviceSn(),controlContext,controlValue,controlMethod,2,"控制成功",controlBy));
@ -325,6 +330,24 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
return atomicInteger.get();
}
@Override
public Integer sceneControl(List<JSONObject> jsonObjectList) {
int count = 0;
for (JSONObject jsonObject : jsonObjectList) {
Integer sceneCode = jsonObject.getInteger("sceneCode");
List<JSONObject> sceneControlCommand = jsonObject.getList("sceneControlCommand", JSONObject.class);
for (JSONObject map : sceneControlCommand) {
Integer deviceId = map.getInteger("deviceId");
List<HashMap> data = map.getList("data", HashMap.class);
int i = setTemperature(deviceId, data, SecurityUtils.getUsername(), 1);
if (i > 0) {
count++;
}
}
}
return count;
}
/**
* 单条控制指令
*
@ -406,19 +429,19 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
List<DeviceStatusVo> deviceStatusVoList = new ArrayList<>();
for (PsdcDevice pd : psdcDevices) {
String deviceModel = pd.getDeviceModel();
if ("温度传感器".equals(deviceModel)){
if ("温度传感器".equals(deviceModel)) {
continue;
}
if ("电表".equals(deviceModel)){
if ("电表".equals(deviceModel)) {
continue;
}
if ("水箱".equals(deviceModel)){
if ("水箱".equals(deviceModel)) {
continue;
}
DeviceStatusVo deviceStatusVo = new DeviceStatusVo();
BeanUtils.copyProperties(pd, deviceStatusVo);
List<Map> ary = new ArrayList<>();
for (ModelVo mv : psdcModelMapper.selDevIsControlByModelName(deviceModel)) {
for (ModelVo mv : psdcModelMapper.selDevIsControlByModelName(deviceModel)) {
Integer deviceId = pd.getDeviceId();
packDevInfos(data, deviceId, ary, mv);
}
@ -436,14 +459,15 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
/**
* 导入设备图片
* @param deviceId 设备Id
*
* @param deviceId 设备Id
* @param devPictureUrl 图片base64
* @return
*/
@Override
public Boolean daoruDevTuPian(Integer deviceId, String devPictureUrl) {
int count = psdcDeviceMapper.daoruDevTuPian(deviceId, devPictureUrl);
if (count > 0){
if (count > 0) {
return true;
} else {
return false;

@ -68,12 +68,14 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
for (Map m : dev.getTempList()) {
String desc = (String) m.get("label");
String tempValue = (String) m.get("value");
String sceneKey = sceneKey(desc);
// SceneVo sceneVo = new SceneVo(scenes.getSceneName(), dev.getDeviceId(), desc, sceneKey, tempValue);
SceneVo sceneVo = new SceneVo(sc.getSceneName(), timestamp, userId, sc.getIsJudge(),
sc.getJudgeDevice(), sc.getJudgeElement(), sc.getJudgeData(), dev.getDeviceId(),
desc, sceneKey, tempValue, sc.getSceneRemark());
scenesList.add(sceneVo);
String sceneKey = sceneKey(desc, tempValue);
if (!sceneKey.equals(tempValue)){
// SceneVo sceneVo = new SceneVo(scenes.getSceneName(), dev.getDeviceId(), desc, sceneKey, tempValue);
SceneVo sceneVo = new SceneVo(sc.getSceneName(), timestamp, userId, sc.getIsJudge(),
sc.getJudgeDevice(), sc.getJudgeElement(), sc.getJudgeData(), dev.getDeviceId(),
desc, sceneKey, tempValue, sc.getSceneRemark());
scenesList.add(sceneVo);
}
}
}
}
@ -87,6 +89,7 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
}
psdcSceneMapper.InsertSceneData(scenesList);
psdcStrategyMapper.insert(strategy);
psdcSceneMapper.deleteById();
return true;
} catch (Exception e) {
e.printStackTrace();
@ -191,13 +194,15 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
for (Map m : dev.getTempList()) {
String desc = (String) m.get("label");
String tempValue = (String) m.get("value");
String sceneKey = sceneKey(desc);
SceneVo sceneVo = new SceneVo(sc.getSceneName(), timestamp, userId, sc.getIsJudge(),
sc.getJudgeDevice(), sc.getJudgeElement(), sc.getJudgeData(), dev.getDeviceId(),
desc, sceneKey, tempValue, sc.getSceneRemark());
sceneVo.setCreateBy(userName);
sceneVo.setCreateTime(sdf.format(date));
scenesList.add(sceneVo);
String sceneKey = sceneKey(desc, tempValue);
if (!sceneKey.equals(tempValue)){
SceneVo sceneVo = new SceneVo(sc.getSceneName(), timestamp, userId, sc.getIsJudge(),
sc.getJudgeDevice(), sc.getJudgeElement(), sc.getJudgeData(), dev.getDeviceId(),
desc, sceneKey, tempValue, sc.getSceneRemark());
sceneVo.setCreateBy(userName);
sceneVo.setCreateTime(sdf.format(date));
scenesList.add(sceneVo);
}
}
}
}
@ -225,6 +230,7 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
try {
psdcSceneMapper.InsertSceneData(scenesList);
psdcStrategyMapper.update(strategy);
psdcSceneMapper.deleteById();
return true;
} catch (Exception e) {
e.printStackTrace();
@ -365,7 +371,8 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
List<SceneVo> scenes = psdcSceneMapper.findSceneByUserAndSceneCode(userId, sceneCode, null);
HashMap<String, Object> map1 = new HashMap<>();
List<Map> list2 = new ArrayList<>();
map1.put("deviceId", sc.getSceneId());
// System.out.println("控制设备集合: " + sc.getDeviceVos() + "!\n");
map1.put("deviceId", scenes.get(0).getDeviceId());
for (SceneVo s : scenes){
HashMap<String, Object> map2 = new HashMap<>();
map2.put("controlKey", s.getSceneKey());
@ -396,13 +403,17 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
return Long.valueOf(timestamp);
}
private String sceneKey(String desc) {
String s = desc.substring(0, 2);
switch (s) {
private String sceneKey(String desc, String value) {
switch (desc) {
case "控制启停":
return "open-close";
case "关闭":
return "close";
switch (value){
case "1":
return "open";
case "2":
return "close";
default:
return "Start-End";
}
default:
return psdcModelMapper.querySceneKeyByDesc(desc);
}

@ -133,7 +133,7 @@
<!--通过主键删除-->
<delete id="deleteById">
delete from psdc_scene where scene_id = #{sceneId}
Delete From `psdc_scene` Where scene_key = scene_value
</delete>
<delete id="deleteBySceneName">

@ -7,7 +7,9 @@ public enum ControlKeyEnum {
TEMPERATURE("temp","设定温度"),
IN_TEMPERATURE("intemp","设定进水温度"),
OUT_TEMPERATURE("outtemp","设定出水温度"),
START_AND_STOP("startandstop","设备启停");
START_AND_STOP("startandstop","设备启停"),
OPEN("open","设备启停"),
CLOSE("close","设备启停");
/**
* 设备指令
@ -34,6 +36,8 @@ public enum ControlKeyEnum {
case "intemp":return IN_TEMPERATURE.getControlContext();
case "outtemp":return OUT_TEMPERATURE.getControlContext();
case "startandstop":return START_AND_STOP.getControlContext();
case "open":return OPEN.getControlContext();
case "close":return CLOSE.getControlContext();
default:return null;
}
}

@ -135,15 +135,15 @@ public class ManualController extends BaseController {
@PreAuthorize("@ss.hasPermi('control:manual:temperature')")
@PostMapping("/senceControl")
public AjaxResult senceControl(@RequestBody List<JSONObject> jsonObjectList){
Integer count = 0;
for (JSONObject jsonObject:jsonObjectList) {
Integer count = psdcDeviceService.sceneControl(jsonObjectList);
/* for (JSONObject jsonObject:jsonObjectList) {
Integer deviceId = jsonObject.getInteger("deviceId");
List<HashMap> data = jsonObject.getList("data", HashMap.class);
int i = psdcDeviceService.setTemperature(deviceId, data, SecurityUtils.getUsername(),1);
if (i > 0){
count++;
}
}
}*/
if (count.equals(jsonObjectList.size())) {
return AjaxResult.success("控制成功");
} else {

Loading…
Cancel
Save