TblSensorController.java 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. package com.ruoyi.data.controller;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Arrays;
  5. import java.util.concurrent.TimeUnit;
  6. import cn.hutool.json.JSONArray;
  7. import cn.hutool.json.JSONObject;
  8. import cn.hutool.json.JSONUtil;
  9. import com.ruoyi.common.utils.redis.CacheUtils;
  10. import com.ruoyi.data.domain.PointData;
  11. import com.ruoyi.data.domain.SensorPoint;
  12. import com.ruoyi.data.domain.SensorRecord;
  13. import com.ruoyi.data.domain.bo.*;
  14. import com.ruoyi.data.domain.vo.TblDatapointVo;
  15. import com.ruoyi.data.domain.vo.TblEquipmentVo;
  16. import com.ruoyi.data.domain.vo.TblSensorRecordVo;
  17. import com.ruoyi.data.service.ITblDatapointService;
  18. import com.ruoyi.data.service.ITblSensorRecordService;
  19. import lombok.RequiredArgsConstructor;
  20. import javax.servlet.http.HttpServletResponse;
  21. import javax.validation.constraints.*;
  22. import cn.dev33.satoken.annotation.SaCheckPermission;
  23. import org.springframework.web.bind.annotation.*;
  24. import org.springframework.validation.annotation.Validated;
  25. import com.ruoyi.common.annotation.RepeatSubmit;
  26. import com.ruoyi.common.annotation.Log;
  27. import com.ruoyi.common.core.controller.BaseController;
  28. import com.ruoyi.common.core.domain.PageQuery;
  29. import com.ruoyi.common.core.domain.R;
  30. import com.ruoyi.common.core.validate.AddGroup;
  31. import com.ruoyi.common.core.validate.EditGroup;
  32. import com.ruoyi.common.core.validate.QueryGroup;
  33. import com.ruoyi.common.enums.BusinessType;
  34. import com.ruoyi.common.utils.poi.ExcelUtil;
  35. import com.ruoyi.data.domain.vo.TblSensorVo;
  36. import com.ruoyi.data.service.ITblSensorService;
  37. import com.ruoyi.common.core.page.TableDataInfo;
  38. /**
  39. * 传感器列
  40. *
  41. * @author ruoyi
  42. * @date 2023-12-15
  43. */
  44. @Validated
  45. @RequiredArgsConstructor
  46. @RestController
  47. @RequestMapping("/data/sensor")
  48. public class TblSensorController extends BaseController {
  49. private final ITblSensorService iTblSensorService;
  50. private final ITblDatapointService iTblDatapointService;
  51. private final ITblSensorRecordService sensorRecordService;
  52. /**
  53. * 查询传感器列列表
  54. */
  55. @SaCheckPermission("data:sensor:list")
  56. @GetMapping("/list")
  57. public TableDataInfo<TblSensorVo> list(TblSensorBo bo, PageQuery pageQuery) {
  58. return iTblSensorService.queryPageList(bo, pageQuery);
  59. }
  60. /**
  61. * 导出传感器列列表
  62. */
  63. @SaCheckPermission("data:sensor:export")
  64. @Log(title = "传感器列", businessType = BusinessType.EXPORT)
  65. @PostMapping("/export")
  66. public void export(TblSensorBo bo, HttpServletResponse response) {
  67. List<TblSensorVo> list = iTblSensorService.queryList(bo);
  68. ExcelUtil.exportExcel(list, "传感器列", TblSensorVo.class, response);
  69. }
  70. /**
  71. * 获取传感器列详细信息
  72. *
  73. * @param id 主键
  74. */
  75. @SaCheckPermission("data:sensor:query")
  76. @GetMapping("/{id}")
  77. public R<TblSensorVo> getInfo(@NotNull(message = "主键不能为空")
  78. @PathVariable Long id) {
  79. return R.ok(iTblSensorService.queryById(id));
  80. }
  81. /**
  82. * 新增传感器列
  83. */
  84. @SaCheckPermission("data:sensor:add")
  85. @Log(title = "传感器列", businessType = BusinessType.INSERT)
  86. @RepeatSubmit()
  87. @PostMapping()
  88. public R<Void> add(@Validated(AddGroup.class) @RequestBody TblSensorBo bo) {
  89. return toAjax(iTblSensorService.insertByBo(bo));
  90. }
  91. /**
  92. * 修改传感器列
  93. */
  94. @SaCheckPermission("data:sensor:edit")
  95. @Log(title = "传感器列", businessType = BusinessType.UPDATE)
  96. @RepeatSubmit()
  97. @PutMapping()
  98. public R<Void> edit(@Validated(EditGroup.class) @RequestBody TblSensorBo bo) {
  99. return toAjax(iTblSensorService.updateByBo(bo));
  100. }
  101. /**
  102. * 删除传感器列
  103. *
  104. * @param ids 主键串
  105. */
  106. @SaCheckPermission("data:sensor:remove")
  107. @Log(title = "传感器列", businessType = BusinessType.DELETE)
  108. @DeleteMapping("/{ids}")
  109. public R<Void> remove(@NotEmpty(message = "主键不能为空")
  110. @PathVariable Long[] ids) {
  111. return toAjax(iTblSensorService.deleteWithValidByIds(Arrays.asList(ids), true));
  112. }
  113. /**
  114. * 获取传感器列详细信息(包含测点数据)
  115. *
  116. * @param id 主键
  117. */
  118. @SaCheckPermission("data:sensor:query")
  119. @GetMapping("/sensorDataPoint/{id}")
  120. public R<SensorPoint> getsensorDataPoint(@NotNull(message = "主键不能为空")
  121. @PathVariable Long id) {
  122. SensorPoint sensorPoint = new SensorPoint();
  123. TblSensorVo tblSensorVo = iTblSensorService.queryById(id);
  124. TblDatapointBo tblDatapointBo = new TblDatapointBo();
  125. List<TblDatapointVo> tblDatapointVoList = iTblDatapointService.queryList(tblDatapointBo);
  126. sensorPoint.setTblSensorVo(tblSensorVo);
  127. List<PointData> pointDatas = new ArrayList<PointData>();
  128. JSONArray pointArry = new JSONArray(tblSensorVo.getDatapoints());
  129. for(Object pointObject:pointArry){
  130. JSONObject jsonObject = new JSONObject(pointObject);
  131. if(jsonObject.get("dataPointId")!=null){
  132. Long pointId = Long.valueOf((String) jsonObject.get("dataPointId"));
  133. for(TblDatapointVo tblDatapointVo:tblDatapointVoList){
  134. if( pointId.longValue() == tblDatapointVo.getId().longValue()) {
  135. PointData pointData = new PointData();
  136. pointData.setName((String) jsonObject.get("name"));
  137. pointData.setLabel((String) jsonObject.get("label"));
  138. pointData.setUnit((String) jsonObject.get("unit"));
  139. pointData.setUnitType((String) jsonObject.get("unitType"));
  140. pointData.setDataPointInfo(tblDatapointVo);
  141. pointDatas.add(pointData);
  142. }
  143. }
  144. }else{
  145. PointData pointData = new PointData();
  146. pointData.setName((String) jsonObject.get("name"));
  147. pointData.setLabel((String) jsonObject.get("label"));
  148. pointData.setUnit((String) jsonObject.get("unit"));
  149. pointData.setUnitType((String) jsonObject.get("unitType"));
  150. pointDatas.add(pointData);
  151. }
  152. }
  153. tblSensorVo.setDatapoints(null);
  154. sensorPoint.setDataPoints(pointDatas);
  155. return R.ok(sensorPoint);
  156. // return R.ok(iTblSensorService.queryById(id));
  157. }
  158. /**
  159. * 根据设备Id查询所有传感器列表
  160. */
  161. @SaCheckPermission("data:sensor:list")
  162. @GetMapping("/alllist")
  163. public TableDataInfo<TblSensorVo> alllist(TblSensorBo bo, PageQuery pageQuery) {
  164. TableDataInfo<TblSensorVo> obj= new TableDataInfo<TblSensorVo>();
  165. List<TblSensorVo> tblSensorVoList = iTblSensorService.queryList(bo);
  166. obj.setRows(tblSensorVoList);
  167. return obj;
  168. }
  169. /**
  170. * 获取每个设备的实时数据
  171. */
  172. @SaCheckPermission("data:sensor:list")
  173. @GetMapping("/sensorRecord")
  174. public TableDataInfo<SensorRecord> getRecord(TblSensorBo bo, PageQuery pageQuery) {
  175. TableDataInfo<SensorRecord> obj= new TableDataInfo<SensorRecord>();
  176. TableDataInfo<TblSensorVo> sensorVoTableDataInfo = iTblSensorService.queryPageList(bo,pageQuery);
  177. List<TblSensorVo> tblSensorVoList = sensorVoTableDataInfo.getRows();
  178. List<SensorRecord> SensorRecordList = new ArrayList<SensorRecord>();
  179. for(TblSensorVo tblSensorVo:tblSensorVoList){
  180. SensorRecord sensorRecord = new SensorRecord();
  181. sensorRecord.setTblSensor(tblSensorVo);
  182. String jsonData = JSONUtil.parseObj(CacheUtils.get("sensorData",tblSensorVo.getId().toString()),true).toStringPretty() ;
  183. sensorRecord.setRecordData(jsonData);
  184. SensorRecordList.add(sensorRecord);
  185. }
  186. obj.setRows(SensorRecordList);
  187. obj.setPage(sensorVoTableDataInfo.getPage());
  188. obj.setTotal(sensorVoTableDataInfo.getTotal());
  189. return obj;
  190. }
  191. }