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 4cf6224..7b5f33b 100644 --- a/psdc-business/src/main/java/com/psdc/service/IPsdcDeviceService.java +++ b/psdc-business/src/main/java/com/psdc/service/IPsdcDeviceService.java @@ -114,4 +114,10 @@ public interface IPsdcDeviceService { * @return */ String executiveStrategy(Integer strategyCode); + + /** + * 获取可控设备列表 + * @return + */ + List queryControlDeviceList(); } 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 578e56b..db3e44e 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 @@ -10,11 +10,9 @@ import com.psdc.entity.vo.ModelVo; import com.psdc.enums.ControlKeyEnum; import com.psdc.exception.ControlException; import com.psdc.mapper.*; -import com.psdc.mqtt.MyMQTTClient; import com.psdc.service.IPsdcDeviceService; import com.psdc.utils.SecurityUtils; import com.psdc.utils.poi.ExcelUtil; -import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -57,6 +55,7 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService { * @param deviceId 主键 * @return 实例对象 */ + @Override public PsdcDevice queryById(Integer deviceId) { return psdcDeviceMapper.queryById(deviceId); } @@ -67,6 +66,7 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService { * * @return 设备列表 */ + @Override public List queryByUserId(Integer parent) { return psdcDeviceMapper.queryByUserId(SecurityUtils.getUserId(), parent); } @@ -81,6 +81,7 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService { return psdcDeviceMapper.queryByUserId(null, null); } + @Override public List queryDeviceStatus() { Date data = new Date(); List psdcDevices = psdcDeviceMapper.selDevicesByUserId(SecurityUtils.getUserId()); @@ -151,6 +152,7 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService { * @param psdcDevice 实例对象 * @return 实例对象 */ + @Override public Integer insert(PsdcDevice psdcDevice) { psdcDevice.setDeviceStatus(1); // 未激活 psdcDevice.setDeviceRunstatus(2); // 关闭 @@ -180,6 +182,7 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService { * @param psdcDevice 实例对象 * @return 实例对象 */ + @Override public Integer update(PsdcDevice psdcDevice) { return psdcDeviceMapper.update(psdcDevice); } @@ -190,6 +193,7 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService { * @param deviceIds 主键 * @return 是否成功 */ + @Override public boolean deleteById(Long[] deviceIds) { int total = psdcDeviceMapper.deleteById(deviceIds); return total > 0; @@ -384,6 +388,57 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService { } } + @Override + public List queryControlDeviceList() { + Date data = new Date(); + List psdcDevices = psdcDeviceMapper.selDevicesByUserId(SecurityUtils.getUserId()); + List deviceStatusVoList = new ArrayList<>(); + for (PsdcDevice pd : psdcDevices) { + String deviceModel = pd.getDeviceModel(); + if ("温度传感器".equals(deviceModel)){ + continue; + } + if ("总电表".equals(deviceModel)){ + continue; + } + DeviceStatusVo deviceStatusVo = new DeviceStatusVo(); + BeanUtils.copyProperties(pd, deviceStatusVo); + List ary = new ArrayList<>(); + for (ModelVo mv : psdcModelMapper.selDevIsControlByModelName(deviceModel)) { + Integer deviceId = pd.getDeviceId(); + PsdcThermometerDataRes thermometerDataRes = thermometerRtdataMapper.selTempByDevId(deviceId, sdf.format(data)); + Map map = new HashMap<>(); + Double tempValue = 0.0; + map.put("controlElement", mv.getRelationField()); + map.put("controlRemark", mv.getIoDesc()); + if (null != thermometerDataRes) { + switch (mv.getRelationField()) { + case "intemp": + tempValue = thermometerDataRes.getThermometerValueIn(); + break; + case "outtemp": + tempValue = thermometerDataRes.getThermometerValueOut(); + break; + case "temp": + tempValue = thermometerDataRes.getThermometerValue(); + break; + } + } + map.put("tempValue", tempValue); + ary.add(map); + } + if (pd.getDeviceRunstatus() != null && pd.getDeviceRunstatus() == 1) { + deviceStatusVo.setDeviceRunstatus(true); + } else { + deviceStatusVo.setDeviceRunstatus(false); + } + deviceStatusVo.setControl_elements(ary); + deviceStatusVoList.add(deviceStatusVo); + } + + return deviceStatusVoList; + } + private String coverStr(String s, int i) { switch (s) { case "s": 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 a387290..91a9734 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 @@ -47,6 +47,17 @@ public class ManualController extends BaseController { return AjaxResult.success("设备状态列表",deviceStatusVos); } + /** + * 获取可控设备列表 + * @return ajax + */ + @PreAuthorize("@ss.hasPermi('control:manual:devlist')") + @GetMapping("/controlDeviceList") + public AjaxResult controlDeviceList() { + List deviceStatusVos = psdcDeviceService.queryControlDeviceList(); + return AjaxResult.success("设备状态列表",deviceStatusVos); + } + /** * 控制设备启停 * @param jsonObject 传参对象 @@ -117,6 +128,33 @@ public class ManualController extends BaseController { } } + /** + * 设置温度 + * @param jsonObjectList 传参对象 + * @return ajax + */ + @PreAuthorize("@ss.hasPermi('control:manual:temperature')") + @PostMapping("/senceControl") + public AjaxResult senceControl(@RequestBody List jsonObjectList){ + Integer count = 0; + 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 { + log.info("控制设备失败。返回数据库实际插入数据:{}",count); + return AjaxResult.error("策略控制执行失败,请联系管理员"); + } + + + } + } diff --git a/psdc-web/src/main/java/com/psdc/controller/monitor/TotalElectricMeterController.java b/psdc-web/src/main/java/com/psdc/controller/monitor/TotalElectricMeterController.java index 5305e96..1761a19 100644 --- a/psdc-web/src/main/java/com/psdc/controller/monitor/TotalElectricMeterController.java +++ b/psdc-web/src/main/java/com/psdc/controller/monitor/TotalElectricMeterController.java @@ -44,6 +44,8 @@ public class TotalElectricMeterController { List maps = new ArrayList<>(); List list = psdcDeviceService.queryByUserId(0); for (PsdcDevice dd : list){ + + Map map = new HashMap<>(); map.put("modelName", dd.getDeviceModel()); map.put("isControl", dd.getIsControl()); @@ -69,7 +71,13 @@ public class TotalElectricMeterController { } map.put("children", maps2); + + + maps.add(map); + + + } return AjaxResult.success("用户所属设备列表", maps); }