From 3fc6c73edf155811a45fcc4d5169e974b7d55dac Mon Sep 17 00:00:00 2001 From: XMnhwj_BackTechnologyDevelopment <3512363680@qq.com> Date: Mon, 29 May 2023 15:26:37 +0800 Subject: [PATCH] =?UTF-8?q?2023-05-29=2015:26:18=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=9C=BA=E6=99=AF=E7=AD=96=E7=95=A5=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/psdc/entity/res/PsdcSceneRes.java | 49 ++++++++ .../java/com/psdc/entity/vo/DeviceVo.java | 34 ++++++ .../main/java/com/psdc/entity/vo/SceneVo.java | 13 ++ .../java/com/psdc/mapper/PsdcSceneMapper.java | 5 +- .../com/psdc/service/IPsdcSceneService.java | 3 +- .../service/impl/PsdcSceneServiceImpl.java | 112 +++++++++++++++--- .../mapper/business/PsdcSceneMapper.xml | 32 ++++- .../manager/PsdcSceneController.java | 6 +- 8 files changed, 228 insertions(+), 26 deletions(-) create mode 100644 psdc-business/src/main/java/com/psdc/entity/res/PsdcSceneRes.java create mode 100644 psdc-business/src/main/java/com/psdc/entity/vo/DeviceVo.java diff --git a/psdc-business/src/main/java/com/psdc/entity/res/PsdcSceneRes.java b/psdc-business/src/main/java/com/psdc/entity/res/PsdcSceneRes.java new file mode 100644 index 0000000..6ed2095 --- /dev/null +++ b/psdc-business/src/main/java/com/psdc/entity/res/PsdcSceneRes.java @@ -0,0 +1,49 @@ +package com.psdc.entity.res; + +import com.psdc.entity.vo.DeviceVo; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @Author:Stone + * @Project:psdc + * @Filename:PsdcSceneRes + * @Date:2023/5/29 9:07 + * @Version 1.0 + */ +@Data +@Component +@AllArgsConstructor +@NoArgsConstructor +public class PsdcSceneRes { + + /** 场景值 */ + private Integer sceneId ; + /** 场景名称 */ + private String sceneName ; + /** 策略码 */ + private Long sceneCode; + /** 用户id */ + private Long userId; + /** 创建时间 */ + private String createTime ; + /** 场景策略备注 */ + private String sceneRemark ; + /** + * 具体设备温度管理场景策略集合 + */ + private List deviceVos; + + public PsdcSceneRes(Integer sceneId, String sceneName, Long sceneCode, Long userId, String createTime, String sceneRemark) { + this.sceneId = sceneId; + this.sceneName = sceneName; + this.sceneCode = sceneCode; + this.userId = userId; + this.createTime = createTime; + this.sceneRemark = sceneRemark; + } +} diff --git a/psdc-business/src/main/java/com/psdc/entity/vo/DeviceVo.java b/psdc-business/src/main/java/com/psdc/entity/vo/DeviceVo.java new file mode 100644 index 0000000..5be745d --- /dev/null +++ b/psdc-business/src/main/java/com/psdc/entity/vo/DeviceVo.java @@ -0,0 +1,34 @@ +package com.psdc.entity.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.stereotype.Component; + +/** + * @Author:Stone + * @Project:psdc + * @Filename:DeviceVo + * @Date:2023/5/29 10:26 + * @Version 1.0 + */ +@Data +@Component +@AllArgsConstructor +@NoArgsConstructor +public class DeviceVo { + + /** 设备id */ + private Integer deviceId ; + /** 设备名称 */ + private String deviceName ; + /** 设备sn */ + private String deviceSn ; + + /** 进水温度 */ + private String intemp ; + /** 出水温度 */ + private String outtemp ; + /** 温度 */ + private String temp ; +} diff --git a/psdc-business/src/main/java/com/psdc/entity/vo/SceneVo.java b/psdc-business/src/main/java/com/psdc/entity/vo/SceneVo.java index 7dd871c..4e249df 100644 --- a/psdc-business/src/main/java/com/psdc/entity/vo/SceneVo.java +++ b/psdc-business/src/main/java/com/psdc/entity/vo/SceneVo.java @@ -4,6 +4,8 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Date; + @Data @AllArgsConstructor @NoArgsConstructor @@ -32,6 +34,17 @@ public class SceneVo { private String sceneKey ; /** 控制值 */ private String sceneValue ; + /** 场景策略备注 */ + private String sceneRemark ; + /** 创建人 */ + private String createBy ; + /** 创建时间 */ + private String createTime ; + /** 修改人 */ + private String updateBy ; + /** 修改时间 */ + private Date updateTime ; + public SceneVo(String sceneName, Integer deviceId, String sceneContext, String sceneKey, String sceneValue) { this.sceneName = sceneName; 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 3c50c98..63f2e6f 100644 --- a/psdc-business/src/main/java/com/psdc/mapper/PsdcSceneMapper.java +++ b/psdc-business/src/main/java/com/psdc/mapper/PsdcSceneMapper.java @@ -109,7 +109,10 @@ public interface PsdcSceneMapper{ */ List queryBySceneName(String sceneName); - List findSceneByUserAndSceneName(@Param(value = "userId") Long userId, + List findSceneByUserAndSceneCode(@Param(value = "userId") Long userId, @Param(value = "sceneCode") Long sceneCode, @Param(value = "sceneName") String sceneName); + + List queryScenes(@Param(value = "userId") Long userId, + @Param(value = "sceneCode") Long sceneCode); } \ No newline at end of file diff --git a/psdc-business/src/main/java/com/psdc/service/IPsdcSceneService.java b/psdc-business/src/main/java/com/psdc/service/IPsdcSceneService.java index bd4bb70..c620432 100644 --- a/psdc-business/src/main/java/com/psdc/service/IPsdcSceneService.java +++ b/psdc-business/src/main/java/com/psdc/service/IPsdcSceneService.java @@ -2,6 +2,7 @@ package com.psdc.service; import com.psdc.entity.PsdcScene; import com.psdc.entity.request.PsdcSceneRequest; +import com.psdc.entity.res.PsdcSceneRes; import com.psdc.entity.vo.SceneVo; import java.util.List; @@ -39,5 +40,5 @@ public interface IPsdcSceneService { List> getStrategyList(); - List findSceneByUserAndSceneName(Long sceneCode); + List findSceneByUserAndSceneName(Long sceneCode); } \ No newline at end of file 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 0cbe74a..858facd 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 @@ -2,6 +2,8 @@ package com.psdc.service.impl; import com.psdc.entity.PsdcScene; import com.psdc.entity.request.PsdcSceneRequest; +import com.psdc.entity.res.PsdcSceneRes; +import com.psdc.entity.vo.DeviceVo; import com.psdc.entity.vo.SceneVo; import com.psdc.mapper.PsdcSceneMapper; import com.psdc.service.IPsdcSceneService; @@ -19,6 +21,7 @@ import static org.springframework.transaction.annotation.Propagation.REQUIRES_NE /** * 场景设定;(psdc_scene)表服务实现类 + * * @date : 2023-5-10 */ @Slf4j @@ -27,35 +30,36 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService { @Autowired private PsdcSceneMapper psdcSceneMapper; - - /** + + /** * 新增数据 + * * @param scenes 实例对象集合 * @return Boolean */ @Override - public Boolean insert(PsdcSceneRequest scenes){ + public Boolean insert(PsdcSceneRequest scenes) { Date date = new Date(); long timestamp = getSecondTimestampTwo(date); long userId = SecurityUtils.getUserId(); List scenesList = new ArrayList<>(); - if (null != scenes.getIntemp() && !"".equals(scenes.getIntemp())){ + if (null != scenes.getIntemp() && !"".equals(scenes.getIntemp())) { SceneVo sceneVo; sceneVo = new SceneVo(scenes.getSceneName(), scenes.getDeviceId(), "进水温度", "intemp", scenes.getIntemp()); scenesList.add(sceneVo); } - if (null != scenes.getOuttemp() && !"".equals(scenes.getOuttemp())){ + if (null != scenes.getOuttemp() && !"".equals(scenes.getOuttemp())) { SceneVo sceneVo = new SceneVo(scenes.getSceneName(), scenes.getDeviceId(), "出水温度", "outtemp", scenes.getOuttemp()); scenesList.add(sceneVo); } - if (null != scenes.getTemp() && !"".equals(scenes.getTemp())){ + if (null != scenes.getTemp() && !"".equals(scenes.getTemp())) { SceneVo sceneVo = new SceneVo(scenes.getSceneName(), scenes.getDeviceId(), "温度", "temp", scenes.getTemp()); scenesList.add(sceneVo); } try { - for (SceneVo sc : scenesList){ + for (SceneVo sc : scenesList) { sc.setSceneCode(timestamp); sc.setUserId(userId); } @@ -70,6 +74,7 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService { /** * 在原有策略基础上增加设备温度管理 + * * @param scenes * @return */ @@ -79,22 +84,22 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService { List scenesList = new ArrayList<>(); String sceneName = psdcSceneMapper.querySceneNameById(scenes.getSceneCode()); Integer deviceId = scenes.getDeviceId(); - if (null != scenes.getIntemp() && !"".equals(scenes.getIntemp())){ + if (null != scenes.getIntemp() && !"".equals(scenes.getIntemp())) { SceneVo sceneVo = new SceneVo(sceneName, deviceId, "进水温度", "intemp", scenes.getIntemp()); scenesList.add(sceneVo); } - if (null != scenes.getOuttemp() && !"".equals(scenes.getOuttemp())){ + if (null != scenes.getOuttemp() && !"".equals(scenes.getOuttemp())) { SceneVo sceneVo = new SceneVo(sceneName, deviceId, "出水温度", "outtemp", scenes.getOuttemp()); scenesList.add(sceneVo); } - if (null != scenes.getTemp() && !"".equals(scenes.getTemp())){ + if (null != scenes.getTemp() && !"".equals(scenes.getTemp())) { SceneVo sceneVo = new SceneVo(sceneName, deviceId, "温度", "temp", scenes.getTemp()); scenesList.add(sceneVo); } try { - for (SceneVo sc : scenesList){ + for (SceneVo sc : scenesList) { sc.setSceneCode(scenes.getSceneCode()); sc.setUserId(userId); } @@ -134,18 +139,19 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService { /** * 通过策略名称删除数据 + * * @param scene * @return 是否成功 */ @Override public Boolean deleteByScene(PsdcSceneRequest scene) { int count = 0; - if (null != scene.getSceneCode() && !"".equals(scene.getSceneCode())){ + if (null != scene.getSceneCode() && !"".equals(scene.getSceneCode())) { count = psdcSceneMapper.deleteBySceneName(scene.getSceneCode()); } else { count = psdcSceneMapper.deleteById(scene.getSceneId()); } - if (count > 0){ + if (count > 0) { return true; } else { return false; @@ -182,25 +188,95 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService { } @Override - public List findSceneByUserAndSceneName(Long sceneCode) { + public List findSceneByUserAndSceneName(Long sceneCode) { Long userId = SecurityUtils.getUserId(); String sceneName = ""; - return psdcSceneMapper.findSceneByUserAndSceneName(userId, sceneCode, sceneName); + List sceneRes = new ArrayList<>(); + List list = psdcSceneMapper.findSceneByUserAndSceneCode(userId, sceneCode, sceneName); + List sceneVos = psdcSceneMapper.queryScenes(userId, sceneCode); + for (SceneVo sv : sceneVos) { + PsdcSceneRes res = new PsdcSceneRes(sv.getSceneId(), sv.getSceneName(), sv.getSceneCode(), sv.getUserId(), sv.getCreateTime(), sv.getSceneRemark()); + sceneRes.add(res); + } + for (PsdcSceneRes psr : sceneRes) { + Long code = psr.getSceneCode(); + List listByCode = new ArrayList<>(); + for (SceneVo sv : list) { + if (code == sv.getSceneCode()) { // 判断是否为同个策略 + listByCode.add(sv); + } + } + List ary = new ArrayList<>(); + Integer deviceId = listByCode.get(0).getDeviceId(); + DeviceVo deviceVo = new DeviceVo(); + for (int i = 0; i < listByCode.size(); i++) { + SceneVo sv = listByCode.get(i); + if (deviceId == sv.getDeviceId()) { + deviceVo.setDeviceId(sv.getDeviceId()); + deviceVo.setDeviceName(sv.getDeviceName()); + deviceVo.setDeviceSn(sv.getDeviceSn()); + switch (sv.getSceneKey()) { + case "intemp": + deviceVo.setIntemp(sv.getSceneValue()); + break; + case "outtemp": + deviceVo.setOuttemp(sv.getSceneValue()); + break; + case "temp": + deviceVo.setTemp(sv.getSceneValue()); + break; + } + } else { + ary.add(deviceVo); + deviceId = sv.getDeviceId(); + deviceVo = new DeviceVo(); + deviceVo.setDeviceId(sv.getDeviceId()); + deviceVo.setDeviceName(sv.getDeviceName()); + deviceVo.setDeviceSn(sv.getDeviceSn()); + if (i == listByCode.size() - 1){ // 判断是否为最后1个元素 + switch (sv.getSceneKey()) { + case "intemp": + deviceVo.setIntemp(sv.getSceneValue()); + case "outtemp": + deviceVo.setOuttemp(sv.getSceneValue()); + case "temp": + deviceVo.setTemp(sv.getSceneValue()); + } + ary.add(deviceVo); + } else { + switch (sv.getSceneKey()) { + case "intemp": + deviceVo.setIntemp(sv.getSceneValue()); + break; + case "outtemp": + deviceVo.setOuttemp(sv.getSceneValue()); + break; + case "temp": + deviceVo.setTemp(sv.getSceneValue()); + break; + } + } + } + } + psr.setDeviceVos(ary); + } + + return sceneRes; } /** * 获取精确到秒的时间戳 + * * @param date * @return */ - public static long getSecondTimestampTwo(Date date){ + public static long getSecondTimestampTwo(Date date) { if (null == date) { return 0; } - String timestamp = String.valueOf(date.getTime()/1000); + String timestamp = String.valueOf(date.getTime() / 1000); return Long.valueOf(timestamp); } - } \ No newline at end of file diff --git a/psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml b/psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml index ee15960..de0ad81 100644 --- a/psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml +++ b/psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml @@ -24,6 +24,11 @@ + + + + + @@ -119,7 +124,8 @@ - + Select ps.scene_id,ps.scene_name,ps.scene_code,ps.user_id,pd.device_name,ps.device_id,pd.device_sn,ps.scene_context,ps.scene_key,ps.scene_value, + ps.scene_remark,ps.scene_remark,ps.create_by,ps.create_time,ps.update_by,ps.update_time From psdc_scene ps Left join sys_user su On su.user_id = ps.user_id Left join psdc_device pd On pd.device_id = ps.device_id @@ -178,6 +185,23 @@ - + + + \ No newline at end of file diff --git a/psdc-web/src/main/java/com/psdc/controller/manager/PsdcSceneController.java b/psdc-web/src/main/java/com/psdc/controller/manager/PsdcSceneController.java index 7c83cbf..932cd1d 100644 --- a/psdc-web/src/main/java/com/psdc/controller/manager/PsdcSceneController.java +++ b/psdc-web/src/main/java/com/psdc/controller/manager/PsdcSceneController.java @@ -1,6 +1,7 @@ package com.psdc.controller.manager; import com.alibaba.fastjson2.JSONObject; +import com.github.pagehelper.page.PageMethod; import com.psdc.annotation.Log; import com.psdc.core.controller.BaseController; import com.psdc.core.domain.AjaxResult; @@ -8,6 +9,7 @@ import com.psdc.core.page.TableDataInfo; import com.psdc.entity.PsdcDevice; import com.psdc.entity.PsdcScene; import com.psdc.entity.request.PsdcSceneRequest; +import com.psdc.entity.res.PsdcSceneRes; import com.psdc.entity.vo.SceneVo; import com.psdc.enums.BusinessType; import com.psdc.service.IPsdcSceneService; @@ -55,8 +57,8 @@ public class PsdcSceneController extends BaseController { @RequestMapping(value = "/list", method = RequestMethod.POST) public TableDataInfo list(@RequestBody JSONObject jsonObject) { startPage(); - PsdcScene sceneVo = myPage(jsonObject, PsdcScene.class); - List list = psdcSceneService.findSceneByUserAndSceneName(sceneVo.getSceneCode()); + PsdcSceneRequest sceneVo = myPage(jsonObject, PsdcSceneRequest.class); + List list = psdcSceneService.findSceneByUserAndSceneName(sceneVo.getSceneCode()); return getDataTable(list); }