diff --git a/psdc-business/src/main/java/com/psdc/mapper/PsdcSceneMapper.java b/psdc-business/src/main/java/com/psdc/mapper/PsdcSceneMapper.java index ccc48eb..3e22ac7 100644 --- a/psdc-business/src/main/java/com/psdc/mapper/PsdcSceneMapper.java +++ b/psdc-business/src/main/java/com/psdc/mapper/PsdcSceneMapper.java @@ -55,13 +55,11 @@ public interface PsdcSceneMapper{ * @return 影响行数 */ int update(PsdcScene psdcScene); - /** - * 通过主键删除数据 - * - * @param sceneId 主键 + + /** * @return 影响行数 */ - int deleteById(Integer sceneId); + int deleteById(); /** * 根据用户ID查询策略信息 diff --git a/psdc-business/src/main/java/com/psdc/service/IPsdcDeviceService.java b/psdc-business/src/main/java/com/psdc/service/IPsdcDeviceService.java index 716adc7..9a7b2d0 100644 --- a/psdc-business/src/main/java/com/psdc/service/IPsdcDeviceService.java +++ b/psdc-business/src/main/java/com/psdc/service/IPsdcDeviceService.java @@ -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 data, String controlBym,Integer controlMethod); + Integer sceneControl(List jsonObjectList); + /** * 设置单条温度指令 * @param deviceId 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 4123e4a..7d0c1c5 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 @@ -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 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 jsonObjectList) { + int count = 0; + for (JSONObject jsonObject : jsonObjectList) { + Integer sceneCode = jsonObject.getInteger("sceneCode"); + List sceneControlCommand = jsonObject.getList("sceneControlCommand", JSONObject.class); + for (JSONObject map : sceneControlCommand) { + Integer deviceId = map.getInteger("deviceId"); + List 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 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 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; diff --git a/psdc-business/src/main/java/com/psdc/service/impl/PsdcSceneServiceImpl.java b/psdc-business/src/main/java/com/psdc/service/impl/PsdcSceneServiceImpl.java index c2726d7..2c881fc 100644 --- a/psdc-business/src/main/java/com/psdc/service/impl/PsdcSceneServiceImpl.java +++ b/psdc-business/src/main/java/com/psdc/service/impl/PsdcSceneServiceImpl.java @@ -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 scenes = psdcSceneMapper.findSceneByUserAndSceneCode(userId, sceneCode, null); HashMap map1 = new HashMap<>(); List 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 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); } diff --git a/psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml b/psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml index d9627f8..0a1fcc3 100644 --- a/psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml +++ b/psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml @@ -133,7 +133,7 @@ - delete from psdc_scene where scene_id = #{sceneId} + Delete From `psdc_scene` Where scene_key = scene_value diff --git a/psdc-common/src/main/java/com/psdc/enums/ControlKeyEnum.java b/psdc-common/src/main/java/com/psdc/enums/ControlKeyEnum.java index fe3a58e..e58a216 100644 --- a/psdc-common/src/main/java/com/psdc/enums/ControlKeyEnum.java +++ b/psdc-common/src/main/java/com/psdc/enums/ControlKeyEnum.java @@ -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; } } 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 4693ba9..2a8e960 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 @@ -135,15 +135,15 @@ public class ManualController extends BaseController { @PreAuthorize("@ss.hasPermi('control:manual:temperature')") @PostMapping("/senceControl") public AjaxResult senceControl(@RequestBody List jsonObjectList){ - Integer count = 0; - for (JSONObject jsonObject:jsonObjectList) { + Integer count = psdcDeviceService.sceneControl(jsonObjectList); +/* for (JSONObject jsonObject:jsonObjectList) { Integer deviceId = jsonObject.getInteger("deviceId"); List 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 {