|
@@ -1,26 +1,34 @@
|
|
|
package com.yunfeiyun.agmp.iotm.device.qxsqz.controller;
|
|
package com.yunfeiyun.agmp.iotm.device.qxsqz.controller;
|
|
|
|
|
|
|
|
|
|
+import com.yunfeiyun.agmp.common.annotation.Excel;
|
|
|
import com.yunfeiyun.agmp.common.constant.ErrorCode;
|
|
import com.yunfeiyun.agmp.common.constant.ErrorCode;
|
|
|
import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
|
|
import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
|
|
|
import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
|
|
import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
|
|
|
|
|
+import com.yunfeiyun.agmp.common.utils.StringUtils;
|
|
|
|
|
+import com.yunfeiyun.agmp.common.utils.poi.SensdataExcelUtil;
|
|
|
|
|
+import com.yunfeiyun.agmp.iot.common.constant.IotErrorCode;
|
|
|
import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceDictConst;
|
|
import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceDictConst;
|
|
|
|
|
+import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
|
|
|
|
|
+import com.yunfeiyun.agmp.iot.common.domain.IotQxzDataListRseVo;
|
|
|
|
|
+import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
|
|
|
import com.yunfeiyun.agmp.iotm.common.controller.BaseController;
|
|
import com.yunfeiyun.agmp.iotm.common.controller.BaseController;
|
|
|
import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseFunReqVo;
|
|
import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseFunReqVo;
|
|
|
|
|
+import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceDataListReqVo;
|
|
|
import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceCommonService;
|
|
import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceCommonService;
|
|
|
import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceRefreshService;
|
|
import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceRefreshService;
|
|
|
import com.yunfeiyun.agmp.iotm.device.qxsqz.domain.IotDeviceQxzDataListReqVo;
|
|
import com.yunfeiyun.agmp.iotm.device.qxsqz.domain.IotDeviceQxzDataListReqVo;
|
|
|
|
|
+import com.yunfeiyun.agmp.iotm.device.qxsqz.domain.QxzExportDataDto;
|
|
|
import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceListReqVo;
|
|
import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceListReqVo;
|
|
|
import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListResVo;
|
|
import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListResVo;
|
|
|
import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
|
|
import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.web.bind.annotation.GetMapping;
|
|
|
|
|
-import org.springframework.web.bind.annotation.PathVariable;
|
|
|
|
|
-import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
|
-import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
import java.util.Arrays;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
|
@@ -138,4 +146,58 @@ public class IotDeviceQxzController extends BaseController {
|
|
|
String result = iotDeviceRefreshService.refresh(devBid);
|
|
String result = iotDeviceRefreshService.refresh(devBid);
|
|
|
return new AjaxResult(ErrorCode.SUCCESS.getCode(), result, null);
|
|
return new AjaxResult(ErrorCode.SUCCESS.getCode(), result, null);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ @PostMapping("/data/export")
|
|
|
|
|
+ public void dataExport(HttpServletResponse response, @RequestBody IotDeviceDataListReqVo reqVo){
|
|
|
|
|
+ String devBid = reqVo.getDevBid();
|
|
|
|
|
+ String startTime = reqVo.getStartTime();
|
|
|
|
|
+ String endTime = reqVo.getEndTime();
|
|
|
|
|
+ String[] params = {devBid, startTime, endTime};
|
|
|
|
|
+ for (String k : params) {
|
|
|
|
|
+ if (StringUtils.isEmpty(k)) {
|
|
|
|
|
+ throw new IotBizException(IotErrorCode.PARAM_INVALID.getCode(), "参数不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ IotDevice iotDevice = iIotDeviceService.selectIotDeviceByDevBid(devBid);
|
|
|
|
|
+ if(iotDevice == null){
|
|
|
|
|
+ throw new IotBizException(IotErrorCode.PARAM_INVALID.getCode(), "设备不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ IotDeviceQxzDataListReqVo iotDeviceQxzDataListReqVo = new IotDeviceQxzDataListReqVo();
|
|
|
|
|
+ iotDeviceQxzDataListReqVo.setDevBid(devBid);
|
|
|
|
|
+ iotDeviceQxzDataListReqVo.setStartTime(startTime);
|
|
|
|
|
+ iotDeviceQxzDataListReqVo.setEndTime(endTime);
|
|
|
|
|
+
|
|
|
|
|
+ IotDeviceBaseFunReqVo iotDeviceBaseFunReqVo = new IotDeviceBaseFunReqVo();
|
|
|
|
|
+ iotDeviceBaseFunReqVo.setDevBid(reqVo.getDevBid());
|
|
|
|
|
+ iotDeviceBaseFunReqVo.setMethodName("dataList");
|
|
|
|
|
+ iotDeviceBaseFunReqVo.setParam(iotDeviceQxzDataListReqVo);
|
|
|
|
|
+ TableDataInfo tableDataInfo = iotDeviceCommonService.func(iotDeviceBaseFunReqVo);
|
|
|
|
|
+
|
|
|
|
|
+ List<List<IotQxzDataListRseVo>> dataList = (List<List<IotQxzDataListRseVo>>) tableDataInfo.getData();
|
|
|
|
|
+ List<IotQxzDataListRseVo> iotQxzDataListRseVoList = dataList.get(0);
|
|
|
|
|
+
|
|
|
|
|
+ //使用数据初始化excel
|
|
|
|
|
+ //动态加入列
|
|
|
|
|
+ //导出(处理动态加入列的数据)
|
|
|
|
|
+ List<QxzExportDataDto> exportDataDtoList = new ArrayList<>();
|
|
|
|
|
+ for(List<IotQxzDataListRseVo> item: dataList){
|
|
|
|
|
+ QxzExportDataDto qxzExportDataDto = new QxzExportDataDto();
|
|
|
|
|
+ IotQxzDataListRseVo dataItem = item.get(0);
|
|
|
|
|
+ qxzExportDataDto.setTimeStr(dataItem.getTime());
|
|
|
|
|
+ qxzExportDataDto.setDataList(item);
|
|
|
|
|
+ qxzExportDataDto.setDevCode(iotDevice.getDevCode());
|
|
|
|
|
+ qxzExportDataDto.setDevtypeName(iotDevice.getDevtypeName());
|
|
|
|
|
+ exportDataDtoList.add(qxzExportDataDto);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //初始化 表头,需要附加 最近数据 中的要素名称
|
|
|
|
|
+ SensdataExcelUtil<QxzExportDataDto> util = new SensdataExcelUtil<>(QxzExportDataDto.class, iotQxzDataListRseVoList);
|
|
|
|
|
+ util.init(exportDataDtoList, "设备数据",StringUtils.EMPTY, Excel.Type.EXPORT);
|
|
|
|
|
+
|
|
|
|
|
+ response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
|
|
|
|
+ response.setCharacterEncoding("utf-8");
|
|
|
|
|
+ util.exportExcel(response);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|