| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- package com.ruoyi.data.controller;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Arrays;
- import java.util.concurrent.TimeUnit;
- import cn.hutool.json.JSONArray;
- import cn.hutool.json.JSONObject;
- import cn.hutool.json.JSONUtil;
- import com.ruoyi.common.utils.redis.CacheUtils;
- import com.ruoyi.data.domain.PointData;
- import com.ruoyi.data.domain.SensorPoint;
- import com.ruoyi.data.domain.SensorRecord;
- import com.ruoyi.data.domain.bo.*;
- import com.ruoyi.data.domain.vo.TblDatapointVo;
- import com.ruoyi.data.domain.vo.TblEquipmentVo;
- import com.ruoyi.data.domain.vo.TblSensorRecordVo;
- import com.ruoyi.data.service.ITblDatapointService;
- import com.ruoyi.data.service.ITblSensorRecordService;
- import lombok.RequiredArgsConstructor;
- import javax.servlet.http.HttpServletResponse;
- import javax.validation.constraints.*;
- import cn.dev33.satoken.annotation.SaCheckPermission;
- import org.springframework.web.bind.annotation.*;
- import org.springframework.validation.annotation.Validated;
- import com.ruoyi.common.annotation.RepeatSubmit;
- import com.ruoyi.common.annotation.Log;
- import com.ruoyi.common.core.controller.BaseController;
- import com.ruoyi.common.core.domain.PageQuery;
- import com.ruoyi.common.core.domain.R;
- import com.ruoyi.common.core.validate.AddGroup;
- import com.ruoyi.common.core.validate.EditGroup;
- import com.ruoyi.common.core.validate.QueryGroup;
- import com.ruoyi.common.enums.BusinessType;
- import com.ruoyi.common.utils.poi.ExcelUtil;
- import com.ruoyi.data.domain.vo.TblSensorVo;
- import com.ruoyi.data.service.ITblSensorService;
- import com.ruoyi.common.core.page.TableDataInfo;
- /**
- * 传感器列
- *
- * @author ruoyi
- * @date 2023-12-15
- */
- @Validated
- @RequiredArgsConstructor
- @RestController
- @RequestMapping("/data/sensor")
- public class TblSensorController extends BaseController {
- private final ITblSensorService iTblSensorService;
- private final ITblDatapointService iTblDatapointService;
- private final ITblSensorRecordService sensorRecordService;
- /**
- * 查询传感器列列表
- */
- @SaCheckPermission("data:sensor:list")
- @GetMapping("/list")
- public TableDataInfo<TblSensorVo> list(TblSensorBo bo, PageQuery pageQuery) {
- return iTblSensorService.queryPageList(bo, pageQuery);
- }
- /**
- * 导出传感器列列表
- */
- @SaCheckPermission("data:sensor:export")
- @Log(title = "传感器列", businessType = BusinessType.EXPORT)
- @PostMapping("/export")
- public void export(TblSensorBo bo, HttpServletResponse response) {
- List<TblSensorVo> list = iTblSensorService.queryList(bo);
- ExcelUtil.exportExcel(list, "传感器列", TblSensorVo.class, response);
- }
- /**
- * 获取传感器列详细信息
- *
- * @param id 主键
- */
- @SaCheckPermission("data:sensor:query")
- @GetMapping("/{id}")
- public R<TblSensorVo> getInfo(@NotNull(message = "主键不能为空")
- @PathVariable Long id) {
- return R.ok(iTblSensorService.queryById(id));
- }
- /**
- * 新增传感器列
- */
- @SaCheckPermission("data:sensor:add")
- @Log(title = "传感器列", businessType = BusinessType.INSERT)
- @RepeatSubmit()
- @PostMapping()
- public R<Void> add(@Validated(AddGroup.class) @RequestBody TblSensorBo bo) {
- return toAjax(iTblSensorService.insertByBo(bo));
- }
- /**
- * 修改传感器列
- */
- @SaCheckPermission("data:sensor:edit")
- @Log(title = "传感器列", businessType = BusinessType.UPDATE)
- @RepeatSubmit()
- @PutMapping()
- public R<Void> edit(@Validated(EditGroup.class) @RequestBody TblSensorBo bo) {
- return toAjax(iTblSensorService.updateByBo(bo));
- }
- /**
- * 删除传感器列
- *
- * @param ids 主键串
- */
- @SaCheckPermission("data:sensor:remove")
- @Log(title = "传感器列", businessType = BusinessType.DELETE)
- @DeleteMapping("/{ids}")
- public R<Void> remove(@NotEmpty(message = "主键不能为空")
- @PathVariable Long[] ids) {
- return toAjax(iTblSensorService.deleteWithValidByIds(Arrays.asList(ids), true));
- }
- /**
- * 获取传感器列详细信息(包含测点数据)
- *
- * @param id 主键
- */
- @SaCheckPermission("data:sensor:query")
- @GetMapping("/sensorDataPoint/{id}")
- public R<SensorPoint> getsensorDataPoint(@NotNull(message = "主键不能为空")
- @PathVariable Long id) {
- SensorPoint sensorPoint = new SensorPoint();
- TblSensorVo tblSensorVo = iTblSensorService.queryById(id);
- TblDatapointBo tblDatapointBo = new TblDatapointBo();
- List<TblDatapointVo> tblDatapointVoList = iTblDatapointService.queryList(tblDatapointBo);
- sensorPoint.setTblSensorVo(tblSensorVo);
- List<PointData> pointDatas = new ArrayList<PointData>();
- 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.longValue() == tblDatapointVo.getId().longValue()) {
- 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);
- return R.ok(sensorPoint);
- // return R.ok(iTblSensorService.queryById(id));
- }
- /**
- * 根据设备Id查询所有传感器列表
- */
- @SaCheckPermission("data:sensor:list")
- @GetMapping("/alllist")
- public TableDataInfo<TblSensorVo> alllist(TblSensorBo bo, PageQuery pageQuery) {
- TableDataInfo<TblSensorVo> obj= new TableDataInfo<TblSensorVo>();
- List<TblSensorVo> tblSensorVoList = iTblSensorService.queryList(bo);
- obj.setRows(tblSensorVoList);
- return obj;
- }
- /**
- * 获取每个设备的实时数据
- */
- @SaCheckPermission("data:sensor:list")
- @GetMapping("/sensorRecord")
- public TableDataInfo<SensorRecord> getRecord(TblSensorBo bo, PageQuery pageQuery) {
- TableDataInfo<SensorRecord> obj= new TableDataInfo<SensorRecord>();
- TableDataInfo<TblSensorVo> sensorVoTableDataInfo = iTblSensorService.queryPageList(bo,pageQuery);
- List<TblSensorVo> tblSensorVoList = sensorVoTableDataInfo.getRows();
- List<SensorRecord> SensorRecordList = new ArrayList<SensorRecord>();
- for(TblSensorVo tblSensorVo:tblSensorVoList){
- SensorRecord sensorRecord = new SensorRecord();
- sensorRecord.setTblSensor(tblSensorVo);
- String jsonData = JSONUtil.parseObj(CacheUtils.get("sensorData",tblSensorVo.getId().toString()),true).toStringPretty() ;
- sensorRecord.setRecordData(jsonData);
- SensorRecordList.add(sensorRecord);
- }
- obj.setRows(SensorRecordList);
- obj.setPage(sensorVoTableDataInfo.getPage());
- obj.setTotal(sensorVoTableDataInfo.getTotal());
- return obj;
- }
- }
|