package com.ruoyi.web.controller.fuzhou; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.fuzhou.domain.*; import com.ruoyi.fuzhou.domain.vo.ReceiveValueListVo; import com.ruoyi.fuzhou.enums.DataTypeEnum; import com.ruoyi.fuzhou.service.*; import com.ruoyi.system.domain.SysOperLog; import com.ruoyi.system.domain.vo.SysOperLogVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import com.ruoyi.system.service.ISysOperLogService; import java.util.ArrayList; import java.util.List; import java.util.Map; @Tag(name = "大屏--设备数据处理结果") @RestController @RequestMapping("/dp/receiveInfoFinal") public class ReceiveInfoFinalController { @Autowired private EquipmentService equipmentService; @Autowired private ReceiveWaterInfoService receiveWaterInfoService; @Autowired private ReceiveOilInfoService receiveOilInfoService; @Autowired private ReceiveElectricityInfoService receiveElectricityInfoService; @Autowired private ReceiveCarRuleService receiveCarRuleService; @Autowired private ReceiveOilValueFinalService receiveOilValueFinalService; @Autowired private ReceiveCarValueFinalService receiveCarValueFinalService; @Autowired private ReceiveElectricityValueFinalService receiveElectricityValueFinalService; @Autowired private ReceiveWaterValueFinalService receiveWaterValueFinalService; @Autowired private ISysOperLogService sysOperLogService; @Autowired private ReceiveOilValueService oilValueService; @Autowired private ReceiveCarValueService carValueService; @Autowired private ReceiveElectricityValueService electricityValueService; @Autowired private ReceiveWaterValueService waterValueService; @Autowired private ReceiveWeatherValueFinalService receiveWeatherValueFinalService; @Autowired private ReceiveWeatherInfoService receiveWeatherInfoService; @Autowired private ReceiveSlmValueFinalService receiveSlmValueFinalService; @Autowired private ReceiveSlmInfoService receiveSlmInfoService; @Operation(summary = "设备数据列表") @GetMapping("/list") public R> list(@RequestParam(value = "deviceType", required = false) Integer deviceType) { return R.ok(equipmentService.list(new LambdaQueryWrapper() {{ or().eq(DpEquipment::getEquipmentTypeId, deviceType); }})); } @Operation(summary = "获取设备数据") @PostMapping("/dataList") public R dataList(@Validated @RequestBody ReceiveValueListVo vo) { DpEquipment receiveInfo = equipmentService.getById(vo.getId()); if (receiveInfo == null) { throw new ServiceException("设备不存在!"); } if (DataTypeEnum.LIJIUOIL.getCode().equals(receiveInfo.getEquipmentTypeId()) || DataTypeEnum.OIL.getCode().equals(receiveInfo.getEquipmentTypeId()) || DataTypeEnum.LIJIUJUN.getCode().equals(receiveInfo.getEquipmentTypeId()) || DataTypeEnum.NIGDETUIYOU.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok(receiveOilValueFinalService.queryData(vo)); } else if (DataTypeEnum.WATER_FLOW.getCode().equals(receiveInfo.getEquipmentTypeId()) || DataTypeEnum.WATER_YA.getCode().equals(receiveInfo.getEquipmentTypeId()) || DataTypeEnum.WATER_DEPT.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok(receiveWaterValueFinalService.queryData(vo)); } else if (DataTypeEnum.ELECTRICITY.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok(receiveElectricityValueFinalService.queryData(vo)); } else if (DataTypeEnum.GONGKUANG.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok(receiveCarValueFinalService.queryData(vo)); }else if (DataTypeEnum.WEATHER.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok(receiveWeatherValueFinalService.queryData(vo)); }else if (DataTypeEnum.SLM.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok(receiveSlmValueFinalService.queryData(vo)); } return R.ok(new ArrayList()); } @Operation(summary = "查询时间段内每天的统计数据") @GetMapping("/selectDailyData") public AjaxResult selectDailyData(@RequestParam(value = "startTime") String startTime, @RequestParam(value = "endTime") String endTime, @RequestParam(value = "title") String title) { JSONArray jsonArray = new JSONArray(); SysOperLogVO insertLog = new SysOperLogVO(); insertLog.setTitle(title); insertLog.setStartTime(startTime); insertLog.setEndTime(endTime); Map> map = sysOperLogService.queryByDate(insertLog); for (Map.Entry> entry : map.entrySet()){ int insertCount = 0; int updateCount = 0; int deleteCount = 0; String date = entry.getKey(); List logList = entry.getValue(); JSONObject jsonObject = new JSONObject(); if(logList.size()>0){ for (SysOperLog operLog : logList){ if(operLog.getBusinessType()==1){ insertCount++; }else if(operLog.getBusinessType()==2){ updateCount++; }else if(operLog.getBusinessType()==3){ deleteCount++; } } } jsonObject.put("dateTime",date); jsonObject.put("insertCount",insertCount); jsonObject.put("updateCount",updateCount); jsonObject.put("deleteCount",deleteCount); jsonArray.add(jsonObject); } return AjaxResult.success(jsonArray); } @Operation(summary = "数量统计") @GetMapping("/queryCount") public AjaxResult queryCount(@RequestParam(value = "title") String title){ JSONObject jsonObject = new JSONObject(); if(title.equals("油表数据")){ jsonObject.put("processedData",receiveOilValueFinalService.queryCount()); jsonObject.put("rawCount",oilValueService.count()); }else if(title.equals("水表数据")){ jsonObject.put("processedData",receiveWaterValueFinalService.queryCount()); jsonObject.put("rawCount",waterValueService.count()); }else if(title.equals("电表数据")){ jsonObject.put("processedData",receiveElectricityValueFinalService.queryCount()); jsonObject.put("rawCount",electricityValueService.count()); }else if(title.equals("工况数据")){ jsonObject.put("processedData",receiveCarValueFinalService.queryCount()); jsonObject.put("rawCount",carValueService.count()); } return AjaxResult.success(jsonObject); } @Operation(summary = "根据title查询统计数据(分页)") @PostMapping("/selectData") public AjaxResult selectData(@Validated @RequestBody SysOperLogVO sysOperLogVO) { List logList = sysOperLogService.queryDataByTitle(sysOperLogVO); TableDataInfo dataInfo = paginate(logList,sysOperLogVO.getPageNum(),sysOperLogVO.getPageSize()); return AjaxResult.success(dataInfo); } @Operation(summary = "判断对应请求路径") @GetMapping("/getUrl") public R getUrl(@RequestParam("equId") String equId) { DpEquipment receiveInfo = equipmentService.getById(equId); if (receiveInfo == null) { throw new ServiceException("设备不存在!"); } if (DataTypeEnum.LIJIUOIL.getCode().equals(receiveInfo.getEquipmentTypeId()) || DataTypeEnum.OIL.getCode().equals(receiveInfo.getEquipmentTypeId()) || DataTypeEnum.LIJIUJUN.getCode().equals(receiveInfo.getEquipmentTypeId()) || DataTypeEnum.NIGDETUIYOU.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok("oilValueFinal"); } else if (DataTypeEnum.WATER_FLOW.getCode().equals(receiveInfo.getEquipmentTypeId()) || DataTypeEnum.WATER_YA.getCode().equals(receiveInfo.getEquipmentTypeId()) || DataTypeEnum.WATER_DEPT.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok("receiveWaterValueFinal"); } else if (DataTypeEnum.ELECTRICITY.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok("receiveElectricityValueFinal"); } else if (DataTypeEnum.GONGKUANG.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok("receiveCarValueFinal"); } else if (DataTypeEnum.WEATHER.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok("receiveWeatherValueFinal"); } else if (DataTypeEnum.SLM.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok("receiveSlmValueFinal"); } return R.ok(null); } @Operation(summary = "获取设备数据表头") @GetMapping("/tableList") public R tableList(@RequestParam("id") Long id) { DpEquipment receiveInfo = equipmentService.getById(id); if (receiveInfo == null) { throw new ServiceException("设备不存在!"); } if (DataTypeEnum.LIJIUOIL.getCode().equals(receiveInfo.getEquipmentTypeId()) || DataTypeEnum.OIL.getCode().equals(receiveInfo.getEquipmentTypeId()) || DataTypeEnum.LIJIUJUN.getCode().equals(receiveInfo.getEquipmentTypeId()) || DataTypeEnum.NIGDETUIYOU.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok(receiveOilInfoService.list(new LambdaQueryWrapper() {{ or().select(ReceiveOilInfo::getParam, ReceiveOilInfo::getParamCode, ReceiveOilInfo::getUnit).eq(ReceiveOilInfo::getDeviceName, String.valueOf(receiveInfo.getId())); }})); } else if (DataTypeEnum.WATER_FLOW.getCode().equals(receiveInfo.getEquipmentTypeId()) || DataTypeEnum.WATER_YA.getCode().equals(receiveInfo.getEquipmentTypeId()) || DataTypeEnum.WATER_DEPT.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok(receiveWaterInfoService.list(new LambdaQueryWrapper() {{ or().select(ReceiveWaterInfo::getParam, ReceiveWaterInfo::getParamCode, ReceiveWaterInfo::getUnit).eq(ReceiveWaterInfo::getDeviceName, String.valueOf(receiveInfo.getId())); }})); } else if (DataTypeEnum.ELECTRICITY.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok(receiveElectricityInfoService.list(new LambdaQueryWrapper() {{ or().select(ReceiveElectricityInfo::getParam, ReceiveElectricityInfo::getParamCode, ReceiveElectricityInfo::getUnit).eq(ReceiveElectricityInfo::getDeviceName, String.valueOf(receiveInfo.getId())); }})); } else if (DataTypeEnum.GONGKUANG.getCode().equals(receiveInfo.getEquipmentTypeId())) { List receiveElectricityInfos = new ArrayList<>(); List list = receiveCarRuleService.list(); ReceiveElectricityInfo electricityInfo; for (ReceiveCarRule rule : list ) { electricityInfo = new ReceiveElectricityInfo(); electricityInfo.setUnit(rule.getUnit()); electricityInfo.setParamCode(rule.getCarCode()); electricityInfo.setParam(rule.getDataName()); receiveElectricityInfos.add(electricityInfo); } return R.ok(receiveElectricityInfos); } else if (DataTypeEnum.WEATHER.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok(receiveWeatherInfoService.list(new LambdaQueryWrapper() {{ or().select(ReceiveWeatherInfo::getParam, ReceiveWeatherInfo::getParamCode, ReceiveWeatherInfo::getUnit).eq(ReceiveWeatherInfo::getDeviceName, String.valueOf(receiveInfo.getId())); }})); } else if (DataTypeEnum.SLM.getCode().equals(receiveInfo.getEquipmentTypeId())) { return R.ok(receiveSlmInfoService.list(new LambdaQueryWrapper() {{ or().select(ReceiveSlmInfo::getParam, ReceiveSlmInfo::getParamCode, ReceiveSlmInfo::getUnit).eq(ReceiveSlmInfo::getDeviceName, String.valueOf(receiveInfo.getId())); }})); } return R.ok(new ArrayList()); } //获取设备数据与表头(分页) @PostMapping("/getPageListByIdRuoyi") @Operation(summary = "获取设备数据与表头(分页)") public AjaxResult getPageListByIdRuoyi(@Validated @RequestBody ReceiveValueListVo vo) { List dataList = dataList(vo).getData(); List tableList = tableList(vo.getId()).getData(); TableDataInfo dataInfo = paginate(dataList, vo.getPageNum(), vo.getPageSize()); JSONObject object = new JSONObject(); object.put("dataList", dataInfo); object.put("tableList", tableList); return AjaxResult.success(object); } //对列表进行分页 private TableDataInfo paginate(List list, int pageNum, int pageSize) { if (list == null || list.isEmpty()) { return new TableDataInfo(new ArrayList<>(), 0); } int total = list.size(); int formIndex = (pageNum - 1) * pageSize; int toIndex = Math.min(formIndex + pageSize, total); if (formIndex >= total) { return new TableDataInfo(new ArrayList<>(), total); } List subList = list.subList(formIndex, toIndex); return new TableDataInfo(subList, total); } }