package com.ruoyi.data.controller; import java.util.ArrayList; import java.util.List; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.domain.entity.SysDictType; import com.ruoyi.data.domain.*; import com.ruoyi.data.domain.bo.*; import com.ruoyi.data.domain.vo.*; import com.ruoyi.data.service.*; import com.ruoyi.system.service.ISysDictTypeService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; /** * 网关设备点位数据 * * @author ruoyi * @date 2023-12-05 */ @Validated @RequiredArgsConstructor @RestController @RequestMapping("/data/device") public class TblDataController extends BaseController { private final ITblEquipmentService iTblEquipmentService; private final ITblDatapointService iTblDatapointService; private final ITblGatewayService iTblGatewayService; private final ITblGatewayEquipmentService iTblGatewayEquipmentService; private final ITblSensorService iTblSensorService; private final ITblUnitService iTblUnitService; private final ISysDictTypeService iSysDictTypeService; /** * 查询网关设备列表 */ @GetMapping("/deviceList") public TableDataInfo list(TblEquipmentBo bo, PageQuery pageQuery) { TableDataInfo obj = new TableDataInfo(); TblGatewayBo tblGatewayBo = new TblGatewayBo(); List sysDictTypeList = iSysDictTypeService.selectDictDataByType("protocal_type"); List gatewayVoList = iTblGatewayService.queryList(tblGatewayBo); TblEquipmentBo tblEquipmentBo = new TblEquipmentBo(); List gateWaySensorList = new ArrayList(); List equipmentVoList = iTblEquipmentService.queryList(tblEquipmentBo); List sensorPointList = getSensorPointList(); for(TblGatewayVo tblGatewayVo:gatewayVoList){ GateWaySensor gateWaySensor = new GateWaySensor(); gateWaySensor.setTblGateway(tblGatewayVo); List sensorPoints = new ArrayList(); for(TblEquipmentVo tblEquipmentvo:equipmentVoList){ if(tblEquipmentvo.getGatewayId() == tblGatewayVo.getId()){ for(SensorPoint sensorPoint:sensorPointList){ if(sensorPoint.getTblSensorVo().getDeviceId() == tblEquipmentvo.getId()){ sensorPoints.add(sensorPoint); } } } } gateWaySensor.setSensorPointList(sensorPoints); gateWaySensorList.add(gateWaySensor); } for(GateWaySensor gateWaySensor:gateWaySensorList){ gateWaySensor.setSn(gateWaySensor.getTblGateway().getSn()); for(SysDictData sysDictData:sysDictTypeList){ if(gateWaySensor.getTblGateway().getProtocalType() == Integer.valueOf(sysDictData.getDictValue())){ gateWaySensor.setProtocalTypeName(sysDictData.getDictLabel()); } } } obj.setRows(gateWaySensorList); return obj; } private List getSensorPointList(){ List list = new ArrayList<>(); List pointUnitlist = new ArrayList<>(); TblSensorBo sensorBo = new TblSensorBo(); List tblSeneorVoList = iTblSensorService.queryList(sensorBo); TblDatapointBo tblDatapointBo = new TblDatapointBo(); List tblDatapointVoList = iTblDatapointService.queryList(tblDatapointBo); TblUnitBo tblUnitBo = new TblUnitBo(); for(TblSensorVo tblSensorVo:tblSeneorVoList){ SensorPoint sensorPoint = new SensorPoint(); sensorPoint.setTblSensorVo(tblSensorVo); List pointDatas = new ArrayList(); JSONArray pointArry = new JSONArray(tblSensorVo.getDatapoints()); for(Object pointObject:pointArry){ JSONObject jsonObject = new JSONObject(pointObject); if(jsonObject.get("dataPointId")!=null){ Long pointId = Long.valueOf((String) jsonObject.get("dataPointId")); for(TblDatapointVo tblDatapointVo:tblDatapointVoList){ if( pointId == tblDatapointVo.getId()) { PointData pointData = new PointData(); pointData.setName((String) jsonObject.get("name")); pointData.setLabel((String) jsonObject.get("label")); pointData.setUnit((String) jsonObject.get("unit")); pointData.setUnitType((String) jsonObject.get("unitType")); pointData.setDataPointInfo(tblDatapointVo); pointDatas.add(pointData); } } }else{ PointData pointData = new PointData(); pointData.setName((String) jsonObject.get("name")); pointData.setLabel((String) jsonObject.get("label")); pointData.setUnit((String) jsonObject.get("unit")); pointData.setUnitType((String) jsonObject.get("unitType")); pointDatas.add(pointData); } } tblSensorVo.setDatapoints(null); sensorPoint.setDataPoints(pointDatas); list.add(sensorPoint); } return list; } }