diff --git a/psdc-business/src/main/java/com/psdc/entity/PsdcModel.java b/psdc-business/src/main/java/com/psdc/entity/PsdcModel.java new file mode 100644 index 0000000..9cf15d6 --- /dev/null +++ b/psdc-business/src/main/java/com/psdc/entity/PsdcModel.java @@ -0,0 +1,33 @@ +package com.psdc.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.stereotype.Component; + +import java.io.Serializable; + + /** + * @Author:Stone + * @Project:psdc + * @date : 2023-6-9 09:25:14 + * @Version 1.0 + */ + @Data + @Component + @AllArgsConstructor + @NoArgsConstructor +public class PsdcModel implements Serializable,Cloneable { + /** 模型Id */ + private Integer modelId ; + /** 模型名称 */ + private String modelName ; + /** 关联域 */ + private String relationField ; + /** io描述 */ + private String ioDesc ; + /** io类型【serve服务;event事件,attribute属性】 */ + private String ioType ; + + +} \ No newline at end of file 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 index 6ed2095..a7e3481 100644 --- a/psdc-business/src/main/java/com/psdc/entity/res/PsdcSceneRes.java +++ b/psdc-business/src/main/java/com/psdc/entity/res/PsdcSceneRes.java @@ -29,6 +29,11 @@ public class PsdcSceneRes { private Long sceneCode; /** 用户id */ private Long userId; + /** + * 该策略是否选中 + */ + private Boolean isCheck; + /** 创建时间 */ private String createTime ; /** 场景策略备注 */ @@ -38,6 +43,15 @@ public class PsdcSceneRes { */ private List deviceVos; + /** 是否有执行判断条件【0:没有;1:有】 */ + private Integer isJudge ; + /** 判断条件设备Id */ + private Integer judgeDevice ; + /** 判断条件设备的元素 */ + private String judgeElement ; + /** 判断条件元素的数据值 */ + private String judgeData ; + public PsdcSceneRes(Integer sceneId, String sceneName, Long sceneCode, Long userId, String createTime, String sceneRemark) { this.sceneId = sceneId; this.sceneName = sceneName; @@ -46,4 +60,17 @@ public class PsdcSceneRes { this.createTime = createTime; this.sceneRemark = sceneRemark; } + + public PsdcSceneRes(Integer sceneId, String sceneName, Long sceneCode, Long userId, String createTime, String sceneRemark, Integer isJudge, Integer judgeDevice, String judgeElement, String judgeData) { + this.sceneId = sceneId; + this.sceneName = sceneName; + this.sceneCode = sceneCode; + this.userId = userId; + this.createTime = createTime; + this.sceneRemark = sceneRemark; + this.isJudge = isJudge; + this.judgeDevice = judgeDevice; + this.judgeElement = judgeElement; + this.judgeData = judgeData; + } } diff --git a/psdc-business/src/main/java/com/psdc/mapper/PsdcModelMapper.java b/psdc-business/src/main/java/com/psdc/mapper/PsdcModelMapper.java index 2141a9b..3f013d6 100644 --- a/psdc-business/src/main/java/com/psdc/mapper/PsdcModelMapper.java +++ b/psdc-business/src/main/java/com/psdc/mapper/PsdcModelMapper.java @@ -1,5 +1,6 @@ package com.psdc.mapper; +import com.psdc.entity.PsdcModel; import com.psdc.entity.vo.ModelVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -24,4 +25,35 @@ public interface PsdcModelMapper { @Param("modelKey") String modelKey); String querySceneKeyByDesc(@Param("ioDesc") String ioDesc); + + /** + * 新增数据 + * @param psdcModel 实例对象 + * @return 影响行数 + */ + Boolean insertModel(PsdcModel psdcModel); + + /** + * 通过主键删除数据 + * @param modelId 主键 + * @return 影响行数 + */ + Integer deleteById(@Param("modelId") Integer modelId); + + /** + * 更新数据 + * + * @param psdcModel 实例对象 + * @return 影响行数 + */ + Boolean updateModel(PsdcModel psdcModel); + + /** + * 分页查询指定行数据 + * @param psdcModel 查询条件 + * @return 对象列表 + */ + List queryAllByLimit(PsdcModel psdcModel); + + } 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 da2323d..b72f58d 100644 --- a/psdc-business/src/main/java/com/psdc/service/IPsdcSceneService.java +++ b/psdc-business/src/main/java/com/psdc/service/IPsdcSceneService.java @@ -35,7 +35,7 @@ public interface IPsdcSceneService { */ Boolean deleteByScene(PsdcSceneRequest scene); - List> getStrategyList(); + List getStrategyList(); 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 ff8aeb0..7633e36 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 @@ -178,31 +178,60 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService { @Override - public List> getStrategyList() { - List scenes = psdcSceneMapper.querySceneGroup(SecurityUtils.getUserId()); - List> collectList = scenes.stream() - .map(scene -> { - List sceneVoList = psdcSceneMapper.queryBySceneName(scene); - Integer[] flag = {null}; - List> collect = sceneVoList.stream() - .filter(sceneVo -> !Objects.equals(flag[0], sceneVo.getDeviceId())) - .peek(sceneVo -> flag[0] = sceneVo.getDeviceId()) - .map(sceneVo -> { - Map map1 = new HashMap<>(); - map1.put("device_name", sceneVo.getDeviceName()); - map1.put("device_id", sceneVo.getDeviceId()); - List sceneVoList1 = psdcSceneMapper.querySceneByDeviceIdAndSceneName(SecurityUtils.getUserId(), sceneVo.getDeviceId(), scene); - map1.put("value", sceneVoList1); - return map1; - }) - .collect(Collectors.toList()); + public List getStrategyList() { + Long userId = SecurityUtils.getUserId(); + List sceneRes = psdcSceneMapper.queryScenes(userId, null); + for (PsdcSceneRes psr : sceneRes) { + Long code = psr.getSceneCode(); + List listByCode = psdcSceneMapper.findSceneByUserAndSceneCode(userId, code, null); + psr.setIsCheck(false); + List ary = new ArrayList<>(); + Integer deviceId = listByCode.get(0).getDeviceId(); + DeviceVo deviceVo = new DeviceVo(); + List list = new ArrayList<>(); + + 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()); Map map = new HashMap<>(); - map.put("sceneName", scene); - map.put("data", collect); - return map; - }) - .collect(Collectors.toList()); - return collectList; + map.put("label", sv.getSceneContext()); + map.put("value", sv.getSceneValue()); + list.add(map); + deviceVo.setTempValue(list); + if (1 == listByCode.size() || i == listByCode.size() - 1){ + ary.add(deviceVo); + } + + } else { + ary.add(deviceVo); + deviceId = sv.getDeviceId(); + deviceVo = new DeviceVo(); + list = new ArrayList<>(); + deviceVo.setDeviceId(sv.getDeviceId()); + deviceVo.setDeviceName(sv.getDeviceName()); + deviceVo.setDeviceSn(sv.getDeviceSn()); + if (i == listByCode.size() - 1) { + Map map = new HashMap<>(); + map.put("label", sv.getSceneContext()); + map.put("value", sv.getSceneValue()); + list.add(map); + deviceVo.setTempValue(list); + ary.add(deviceVo); + } else { + Map map = new HashMap<>(); + map.put("label", sv.getSceneContext()); + map.put("value", sv.getSceneValue()); + list.add(map); + deviceVo.setTempValue(list); + } + } + } + psr.setDeviceVos(ary); + } + return sceneRes; } @Override @@ -224,17 +253,6 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService { 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; -// } Map map = new HashMap<>(); map.put("label", sv.getSceneContext()); map.put("value", sv.getSceneValue()); @@ -253,15 +271,6 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService { 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()); -// } Map map = new HashMap<>(); map.put("label", sv.getSceneContext()); map.put("value", sv.getSceneValue()); @@ -269,17 +278,6 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService { deviceVo.setTempValue(list); 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; -// } Map map = new HashMap<>(); map.put("label", sv.getSceneContext()); map.put("value", sv.getSceneValue()); diff --git a/psdc-business/src/main/resources/mapper/business/PsdcModelMapper.xml b/psdc-business/src/main/resources/mapper/business/PsdcModelMapper.xml index c058318..58148ed 100644 --- a/psdc-business/src/main/resources/mapper/business/PsdcModelMapper.xml +++ b/psdc-business/src/main/resources/mapper/business/PsdcModelMapper.xml @@ -9,6 +9,60 @@ + + + Insert into psdc_model(model_id, model_name, relation_field, io_desc, io_type) + Values (#{modelId}, #{modelName}, #{relationField}, #{ioDesc}, #{ioType}) + + + + + Delete From psdc_model Where model_id = ${modelId} + + + + + update psdc_model + + + model_name = #{modelName}, + + + relation_field = #{relationField}, + + + io_desc = #{ioDesc}, + + + io_type = #{ioType}, + + + Where model_id = ${modelId} + + + + Select relation_field From psdc_model WHERE io_desc = #{ioDesc} Group By relation_field + \ 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 66c3b8e..70b76f9 100644 --- a/psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml +++ b/psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml @@ -38,6 +38,10 @@ + + + + @@ -201,7 +205,7 @@