diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java index 9ff9f27..fcb840e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -37,14 +37,17 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; @@ -81,6 +84,9 @@ @Autowired private IAreaService iAreaService; + @Value("${smartcity.config.config-path}") + private String templatePath; + @ApiOperation("获取设备列表") @RequestMapping(value = "/list") @ResponseBody @@ -315,6 +321,47 @@ return new SuccessResponseData(deviceService.selectDeviceTotalData(devCode, beginTime, endTime)); } + @ApiOperation("导出设备历史数据") + @RequestMapping(value = "/exportTotalData") + public void exportTotalData(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException { + String devCode = httpServletRequest.getParameter("devCode"); + String beginTime = httpServletRequest.getParameter("beginTime"); + String endTime = httpServletRequest.getParameter("endTime"); + + if (ToolUtil.isEmpty(devCode)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + + List> list = deviceService.selectDeviceTotalData(devCode, beginTime, endTime); + + FileInputStream fileInputStream = null; + if (ToolUtil.isEmpty(list)) { + fileInputStream = new FileInputStream(templatePath+"/waterMeterDataEmpty.xlsx"); + } else { + fileInputStream = new FileInputStream(templatePath+"/waterMeterDataTemplate.xlsx"); + } + + try { + httpServletResponse.setContentType("application/octet-stream"); + httpServletResponse.addHeader("Content-Disposition", " attachment;filename="+"waterMeterData.xlsx" ); + + Map var = new HashMap<>(); + var.put("标题", devCode + "历史数据列表"); + var.put("list", list); + ExcelIO.writeTemplate(fileInputStream, httpServletResponse.getOutputStream(), var); + + } catch (IOException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + httpServletResponse.getOutputStream().flush(); + httpServletResponse.getOutputStream().close(); + fileInputStream.close(); + } + } + + // @ApiOperation("统计设备在一定时间段内报警数") // @RequestMapping(value = "/alarmCountByDay") // @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java index 9ff9f27..fcb840e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -37,14 +37,17 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; @@ -81,6 +84,9 @@ @Autowired private IAreaService iAreaService; + @Value("${smartcity.config.config-path}") + private String templatePath; + @ApiOperation("获取设备列表") @RequestMapping(value = "/list") @ResponseBody @@ -315,6 +321,47 @@ return new SuccessResponseData(deviceService.selectDeviceTotalData(devCode, beginTime, endTime)); } + @ApiOperation("导出设备历史数据") + @RequestMapping(value = "/exportTotalData") + public void exportTotalData(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException { + String devCode = httpServletRequest.getParameter("devCode"); + String beginTime = httpServletRequest.getParameter("beginTime"); + String endTime = httpServletRequest.getParameter("endTime"); + + if (ToolUtil.isEmpty(devCode)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + + List> list = deviceService.selectDeviceTotalData(devCode, beginTime, endTime); + + FileInputStream fileInputStream = null; + if (ToolUtil.isEmpty(list)) { + fileInputStream = new FileInputStream(templatePath+"/waterMeterDataEmpty.xlsx"); + } else { + fileInputStream = new FileInputStream(templatePath+"/waterMeterDataTemplate.xlsx"); + } + + try { + httpServletResponse.setContentType("application/octet-stream"); + httpServletResponse.addHeader("Content-Disposition", " attachment;filename="+"waterMeterData.xlsx" ); + + Map var = new HashMap<>(); + var.put("标题", devCode + "历史数据列表"); + var.put("list", list); + ExcelIO.writeTemplate(fileInputStream, httpServletResponse.getOutputStream(), var); + + } catch (IOException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + httpServletResponse.getOutputStream().flush(); + httpServletResponse.getOutputStream().close(); + fileInputStream.close(); + } + } + + // @ApiOperation("统计设备在一定时间段内报警数") // @RequestMapping(value = "/alarmCountByDay") // @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index 87ddf17..8ffeab9 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -1025,18 +1025,18 @@ SELECT dw.FLOW_ACC AS total, - date_format(dw.UPTIME, '%Y-%m-%d %T') AS uptime, - dw.`STATUS` AS deviceState + dw.FLOW_ACC_DATE AS dayCount, + dw.DATE AS uptime FROM - data_watermeter AS dw + data_watermeter_day AS dw WHERE dw.DEVCODE = #{devCode} - AND DATE_FORMAT(dw.UPTIME,'%Y-%m-%d') = ]]> #{beginTime} + AND dw.DATE = ]]> #{beginTime} - AND DATE_FORMAT(dw.UPTIME,'%Y-%m-%d') #{endTime} + AND dw.DATE #{endTime} - order by dw.uptime desc + order by dw.DATE desc SELECT dw.FLOW_ACC AS total, - date_format(dw.UPTIME, '%Y-%m-%d %T') AS uptime, - dw.`STATUS` AS deviceState + dw.FLOW_ACC_DATE AS dayCount, + dw.DATE AS uptime FROM - data_watermeter AS dw + data_watermeter_day AS dw WHERE dw.DEVCODE = #{devCode} - AND DATE_FORMAT(dw.UPTIME,'%Y-%m-%d') = ]]> #{beginTime} + AND dw.DATE = ]]> #{beginTime} - AND DATE_FORMAT(dw.UPTIME,'%Y-%m-%d') #{endTime} + AND dw.DATE #{endTime} - order by dw.uptime desc + order by dw.DATE desc SELECT dw.FLOW_ACC AS total, - date_format(dw.UPTIME, '%Y-%m-%d %T') AS uptime, - dw.`STATUS` AS deviceState + dw.FLOW_ACC_DATE AS dayCount, + dw.DATE AS uptime FROM - data_watermeter AS dw + data_watermeter_day AS dw WHERE dw.DEVCODE = #{devCode} - AND DATE_FORMAT(dw.UPTIME,'%Y-%m-%d') = ]]> #{beginTime} + AND dw.DATE = ]]> #{beginTime} - AND DATE_FORMAT(dw.UPTIME,'%Y-%m-%d') #{endTime} + AND dw.DATE #{endTime} - order by dw.uptime desc + order by dw.DATE desc