diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c1ae6a9..837ff89 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -98,6 +98,9 @@ String statusStr = httpServletRequest.getParameter("status"); String alarmTypeStr = httpServletRequest.getParameter("alarmType"); String alarmContentStr = httpServletRequest.getParameter("alarmContentType"); + String areaId = httpServletRequest.getParameter("areaId"); + if (areaId.indexOf("00") > 0) + areaId = areaId.substring(0, areaId.indexOf("00")); Page> page = new PageFactory>().defaultPage("alarmTime",false); page.setLimit(maxRowsExcel); @@ -110,7 +113,7 @@ if (!currentUser.getRoleTips().contains(sAdmin) && !currentUser.getRoleTips().contains(sOperator)) { alarmTypeStr = "1"; } - List> alarmExpList = alarmRecordsService.alarmList(page,keywords,beginTime,endTime,statusStr,alarmTypeStr,alarmContentStr,"", dataScope); + List> alarmExpList = alarmRecordsService.alarmList(page,keywords,beginTime,endTime,statusStr,alarmTypeStr,alarmContentStr,areaId, dataScope); new AlarmRecordWarpper(alarmExpList).warp(); FileInputStream fileInputStream = null; @@ -123,7 +126,7 @@ try { httpServletResponse.setContentType("application/octet-stream"); - httpServletResponse.addHeader("Content-Disposition", " attachment;filename="+"alarmOverview.xlsx" ); + httpServletResponse.addHeader("Content-Disposition", " attachment;filename="+"alarmRecord.xlsx" ); Map var = new HashMap<>(); var.put("标题","报警一览表"); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c1ae6a9..837ff89 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -98,6 +98,9 @@ String statusStr = httpServletRequest.getParameter("status"); String alarmTypeStr = httpServletRequest.getParameter("alarmType"); String alarmContentStr = httpServletRequest.getParameter("alarmContentType"); + String areaId = httpServletRequest.getParameter("areaId"); + if (areaId.indexOf("00") > 0) + areaId = areaId.substring(0, areaId.indexOf("00")); Page> page = new PageFactory>().defaultPage("alarmTime",false); page.setLimit(maxRowsExcel); @@ -110,7 +113,7 @@ if (!currentUser.getRoleTips().contains(sAdmin) && !currentUser.getRoleTips().contains(sOperator)) { alarmTypeStr = "1"; } - List> alarmExpList = alarmRecordsService.alarmList(page,keywords,beginTime,endTime,statusStr,alarmTypeStr,alarmContentStr,"", dataScope); + List> alarmExpList = alarmRecordsService.alarmList(page,keywords,beginTime,endTime,statusStr,alarmTypeStr,alarmContentStr,areaId, dataScope); new AlarmRecordWarpper(alarmExpList).warp(); FileInputStream fileInputStream = null; @@ -123,7 +126,7 @@ try { httpServletResponse.setContentType("application/octet-stream"); - httpServletResponse.addHeader("Content-Disposition", " attachment;filename="+"alarmOverview.xlsx" ); + httpServletResponse.addHeader("Content-Disposition", " attachment;filename="+"alarmRecord.xlsx" ); Map var = new HashMap<>(); var.put("标题","报警一览表"); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/WaterMeterDataController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/WaterMeterDataController.java index 9215168..d79e92e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/WaterMeterDataController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/WaterMeterDataController.java @@ -6,17 +6,24 @@ import com.casic.missiles.core.common.constant.factory.PageFactory; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.dto.DeviceDto; import com.casic.missiles.modular.system.service.IDeviceService; import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; +import org.hswebframework.expands.office.excel.ExcelIO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.FileInputStream; +import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -30,24 +37,29 @@ private final ICommonPermissionService permissionService; private final IDeviceService deviceService; + @Value("${smartcity.office.maxRowsExcel}") + private int maxRowsExcel; + @Value("${smartcity.config.config-path}") + private String templatePath; + + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public WaterMeterDataController(ICommonPermissionService permissionService, IDeviceService deviceService) { this.permissionService = permissionService; this.deviceService = deviceService; } - @ApiOperation("获取水表设备列表") + @ApiOperation(value = "获取水表设备列表") @RequestMapping(value = "/listPage") @ResponseBody public Object listPage(String keywords, String areaId) { Page page = new PageFactory().defaultPage(); //查询数据权限 使用默认DEPTID 字段 DataScope dataScope = permissionService.getCurrUserDataScope(); -// areaId += "%"; List list = deviceService.selectDataScopePage(dataScope, page, "13", "", "", "", keywords, "", areaId); - DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date = sdf.format(new Date()); list.forEach(deviceDto -> { @@ -88,6 +100,89 @@ return new SuccessResponseData(super.packForBT(page)); } + @ApiOperation(value = "导出水表设备列表") + @RequestMapping(value = "/export") + public void export(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException { + Page> page = new PageFactory>().defaultPage(); + + String keywords = httpServletRequest.getParameter("keywords"); + String areaId = httpServletRequest.getParameter("areaId"); + if (ToolUtil.isNotEmpty(areaId) && areaId.indexOf("00") > 0) + areaId = areaId.substring(0, areaId.indexOf("00")); + + page.setLimit(maxRowsExcel); + page.setSize(maxRowsExcel); + page.setOffset(0); + page.setSearchCount(false); + + //查询数据权限 使用默认DEPTID 字段 + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope, page, "13", "", keywords, areaId); + + String date = sdf.format(new Date()); + + list.forEach(deviceDto -> { + // 获取日月年用水量和最近的读数 + Map dayMeter = deviceService.selectWaterMeterDay(deviceDto.get("DEVCODE").toString(), date); + if (dayMeter == null) { + deviceDto.put("dayCount", "0"); + } else { + deviceDto.put("dayCount", dayMeter.get("FLOW_ACC_DATE") == null ? "0" : dayMeter.get("FLOW_ACC_DATE").toString()); + } + + Map monthMeter = deviceService.selectWaterMeterMonth(deviceDto.get("DEVCODE").toString(), date.substring(0, 7)); + if (monthMeter == null) { + deviceDto.put("monthCount", "0"); + } else { + deviceDto.put("monthCount", monthMeter.get("FLOW_ACC_MONTH") == null ? "0" : monthMeter.get("FLOW_ACC_MONTH").toString()); + } + + Map totalMeter = deviceService.selectWaterMeterTotal(deviceDto.get("DEVCODE").toString(), date.substring(0, 4)); + if (totalMeter == null) { + deviceDto.put("totalCount", "0"); + } else { + deviceDto.put("totalCount", totalMeter.get("FLOW_ACC_TOTAL") == null ? "0" : totalMeter.get("FLOW_ACC_TOTAL").toString()); + } + + Map meterRec = deviceService.selectLatestWaterMeter(deviceDto.get("DEVCODE").toString()); + if (meterRec == null) { + deviceDto.put("watchNum", "0"); + deviceDto.put("uptime", sdf4.format(new Date())); + } else { + deviceDto.put("watchNum", meterRec.get("FLOW_ACC") == null ? "0" : meterRec.get("FLOW_ACC").toString()); + deviceDto.put("uptime", sdf4.format((Date) meterRec.get("UPTIME"))); + } + + deviceDto.put("fullAreaName", deviceService.getAreaFullNameById(deviceDto.get("AREA").toString())); + }); + + FileInputStream fileInputStream = null; + if (ToolUtil.isEmpty(list)) { + fileInputStream = new FileInputStream(templatePath+"/waterMeterListEmpty.xlsx"); + } else { + fileInputStream = new FileInputStream(templatePath+"/waterMeterListTemplate.xlsx"); + } + + try { + httpServletResponse.setContentType("application/octet-stream"); + httpServletResponse.addHeader("Content-Disposition", " attachment;filename="+"waterMeterList.xlsx" ); + + Map var = new HashMap<>(); + var.put("标题", "设备数据列表"); + 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 = "/count") @ResponseBody diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c1ae6a9..837ff89 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -98,6 +98,9 @@ String statusStr = httpServletRequest.getParameter("status"); String alarmTypeStr = httpServletRequest.getParameter("alarmType"); String alarmContentStr = httpServletRequest.getParameter("alarmContentType"); + String areaId = httpServletRequest.getParameter("areaId"); + if (areaId.indexOf("00") > 0) + areaId = areaId.substring(0, areaId.indexOf("00")); Page> page = new PageFactory>().defaultPage("alarmTime",false); page.setLimit(maxRowsExcel); @@ -110,7 +113,7 @@ if (!currentUser.getRoleTips().contains(sAdmin) && !currentUser.getRoleTips().contains(sOperator)) { alarmTypeStr = "1"; } - List> alarmExpList = alarmRecordsService.alarmList(page,keywords,beginTime,endTime,statusStr,alarmTypeStr,alarmContentStr,"", dataScope); + List> alarmExpList = alarmRecordsService.alarmList(page,keywords,beginTime,endTime,statusStr,alarmTypeStr,alarmContentStr,areaId, dataScope); new AlarmRecordWarpper(alarmExpList).warp(); FileInputStream fileInputStream = null; @@ -123,7 +126,7 @@ try { httpServletResponse.setContentType("application/octet-stream"); - httpServletResponse.addHeader("Content-Disposition", " attachment;filename="+"alarmOverview.xlsx" ); + httpServletResponse.addHeader("Content-Disposition", " attachment;filename="+"alarmRecord.xlsx" ); Map var = new HashMap<>(); var.put("标题","报警一览表"); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/WaterMeterDataController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/WaterMeterDataController.java index 9215168..d79e92e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/WaterMeterDataController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/WaterMeterDataController.java @@ -6,17 +6,24 @@ import com.casic.missiles.core.common.constant.factory.PageFactory; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.dto.DeviceDto; import com.casic.missiles.modular.system.service.IDeviceService; import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; +import org.hswebframework.expands.office.excel.ExcelIO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.FileInputStream; +import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -30,24 +37,29 @@ private final ICommonPermissionService permissionService; private final IDeviceService deviceService; + @Value("${smartcity.office.maxRowsExcel}") + private int maxRowsExcel; + @Value("${smartcity.config.config-path}") + private String templatePath; + + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public WaterMeterDataController(ICommonPermissionService permissionService, IDeviceService deviceService) { this.permissionService = permissionService; this.deviceService = deviceService; } - @ApiOperation("获取水表设备列表") + @ApiOperation(value = "获取水表设备列表") @RequestMapping(value = "/listPage") @ResponseBody public Object listPage(String keywords, String areaId) { Page page = new PageFactory().defaultPage(); //查询数据权限 使用默认DEPTID 字段 DataScope dataScope = permissionService.getCurrUserDataScope(); -// areaId += "%"; List list = deviceService.selectDataScopePage(dataScope, page, "13", "", "", "", keywords, "", areaId); - DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date = sdf.format(new Date()); list.forEach(deviceDto -> { @@ -88,6 +100,89 @@ return new SuccessResponseData(super.packForBT(page)); } + @ApiOperation(value = "导出水表设备列表") + @RequestMapping(value = "/export") + public void export(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException { + Page> page = new PageFactory>().defaultPage(); + + String keywords = httpServletRequest.getParameter("keywords"); + String areaId = httpServletRequest.getParameter("areaId"); + if (ToolUtil.isNotEmpty(areaId) && areaId.indexOf("00") > 0) + areaId = areaId.substring(0, areaId.indexOf("00")); + + page.setLimit(maxRowsExcel); + page.setSize(maxRowsExcel); + page.setOffset(0); + page.setSearchCount(false); + + //查询数据权限 使用默认DEPTID 字段 + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope, page, "13", "", keywords, areaId); + + String date = sdf.format(new Date()); + + list.forEach(deviceDto -> { + // 获取日月年用水量和最近的读数 + Map dayMeter = deviceService.selectWaterMeterDay(deviceDto.get("DEVCODE").toString(), date); + if (dayMeter == null) { + deviceDto.put("dayCount", "0"); + } else { + deviceDto.put("dayCount", dayMeter.get("FLOW_ACC_DATE") == null ? "0" : dayMeter.get("FLOW_ACC_DATE").toString()); + } + + Map monthMeter = deviceService.selectWaterMeterMonth(deviceDto.get("DEVCODE").toString(), date.substring(0, 7)); + if (monthMeter == null) { + deviceDto.put("monthCount", "0"); + } else { + deviceDto.put("monthCount", monthMeter.get("FLOW_ACC_MONTH") == null ? "0" : monthMeter.get("FLOW_ACC_MONTH").toString()); + } + + Map totalMeter = deviceService.selectWaterMeterTotal(deviceDto.get("DEVCODE").toString(), date.substring(0, 4)); + if (totalMeter == null) { + deviceDto.put("totalCount", "0"); + } else { + deviceDto.put("totalCount", totalMeter.get("FLOW_ACC_TOTAL") == null ? "0" : totalMeter.get("FLOW_ACC_TOTAL").toString()); + } + + Map meterRec = deviceService.selectLatestWaterMeter(deviceDto.get("DEVCODE").toString()); + if (meterRec == null) { + deviceDto.put("watchNum", "0"); + deviceDto.put("uptime", sdf4.format(new Date())); + } else { + deviceDto.put("watchNum", meterRec.get("FLOW_ACC") == null ? "0" : meterRec.get("FLOW_ACC").toString()); + deviceDto.put("uptime", sdf4.format((Date) meterRec.get("UPTIME"))); + } + + deviceDto.put("fullAreaName", deviceService.getAreaFullNameById(deviceDto.get("AREA").toString())); + }); + + FileInputStream fileInputStream = null; + if (ToolUtil.isEmpty(list)) { + fileInputStream = new FileInputStream(templatePath+"/waterMeterListEmpty.xlsx"); + } else { + fileInputStream = new FileInputStream(templatePath+"/waterMeterListTemplate.xlsx"); + } + + try { + httpServletResponse.setContentType("application/octet-stream"); + httpServletResponse.addHeader("Content-Disposition", " attachment;filename="+"waterMeterList.xlsx" ); + + Map var = new HashMap<>(); + var.put("标题", "设备数据列表"); + 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 = "/count") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index c226fb9..2fb90f8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,6 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords, @Param("isOnline") String isOnline, @Param("areaId") String areaId); + List selectDeviceForMap(@Param("devType") String devType, @Param("keywords") String keywords); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); @@ -69,6 +70,8 @@ List> selectHarmfulDataList(@Param("dataScope") DataScope dataScope, @Param("wellCode") String wellCode, @Param("beginTime") String beginTime, @Param("endTime") String endTime); + List> selectWaterMeterDeviceListScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page> page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords, @Param("areaId") String areaId); + Map selectWaterMeterDay(@Param("devcode") String devcode, @Param("date") String date); Map selectWaterMeterMonth(@Param("devcode") String devcode, @Param("month") String month); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c1ae6a9..837ff89 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -98,6 +98,9 @@ String statusStr = httpServletRequest.getParameter("status"); String alarmTypeStr = httpServletRequest.getParameter("alarmType"); String alarmContentStr = httpServletRequest.getParameter("alarmContentType"); + String areaId = httpServletRequest.getParameter("areaId"); + if (areaId.indexOf("00") > 0) + areaId = areaId.substring(0, areaId.indexOf("00")); Page> page = new PageFactory>().defaultPage("alarmTime",false); page.setLimit(maxRowsExcel); @@ -110,7 +113,7 @@ if (!currentUser.getRoleTips().contains(sAdmin) && !currentUser.getRoleTips().contains(sOperator)) { alarmTypeStr = "1"; } - List> alarmExpList = alarmRecordsService.alarmList(page,keywords,beginTime,endTime,statusStr,alarmTypeStr,alarmContentStr,"", dataScope); + List> alarmExpList = alarmRecordsService.alarmList(page,keywords,beginTime,endTime,statusStr,alarmTypeStr,alarmContentStr,areaId, dataScope); new AlarmRecordWarpper(alarmExpList).warp(); FileInputStream fileInputStream = null; @@ -123,7 +126,7 @@ try { httpServletResponse.setContentType("application/octet-stream"); - httpServletResponse.addHeader("Content-Disposition", " attachment;filename="+"alarmOverview.xlsx" ); + httpServletResponse.addHeader("Content-Disposition", " attachment;filename="+"alarmRecord.xlsx" ); Map var = new HashMap<>(); var.put("标题","报警一览表"); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/WaterMeterDataController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/WaterMeterDataController.java index 9215168..d79e92e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/WaterMeterDataController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/WaterMeterDataController.java @@ -6,17 +6,24 @@ import com.casic.missiles.core.common.constant.factory.PageFactory; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.dto.DeviceDto; import com.casic.missiles.modular.system.service.IDeviceService; import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; +import org.hswebframework.expands.office.excel.ExcelIO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.FileInputStream; +import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -30,24 +37,29 @@ private final ICommonPermissionService permissionService; private final IDeviceService deviceService; + @Value("${smartcity.office.maxRowsExcel}") + private int maxRowsExcel; + @Value("${smartcity.config.config-path}") + private String templatePath; + + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public WaterMeterDataController(ICommonPermissionService permissionService, IDeviceService deviceService) { this.permissionService = permissionService; this.deviceService = deviceService; } - @ApiOperation("获取水表设备列表") + @ApiOperation(value = "获取水表设备列表") @RequestMapping(value = "/listPage") @ResponseBody public Object listPage(String keywords, String areaId) { Page page = new PageFactory().defaultPage(); //查询数据权限 使用默认DEPTID 字段 DataScope dataScope = permissionService.getCurrUserDataScope(); -// areaId += "%"; List list = deviceService.selectDataScopePage(dataScope, page, "13", "", "", "", keywords, "", areaId); - DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date = sdf.format(new Date()); list.forEach(deviceDto -> { @@ -88,6 +100,89 @@ return new SuccessResponseData(super.packForBT(page)); } + @ApiOperation(value = "导出水表设备列表") + @RequestMapping(value = "/export") + public void export(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException { + Page> page = new PageFactory>().defaultPage(); + + String keywords = httpServletRequest.getParameter("keywords"); + String areaId = httpServletRequest.getParameter("areaId"); + if (ToolUtil.isNotEmpty(areaId) && areaId.indexOf("00") > 0) + areaId = areaId.substring(0, areaId.indexOf("00")); + + page.setLimit(maxRowsExcel); + page.setSize(maxRowsExcel); + page.setOffset(0); + page.setSearchCount(false); + + //查询数据权限 使用默认DEPTID 字段 + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope, page, "13", "", keywords, areaId); + + String date = sdf.format(new Date()); + + list.forEach(deviceDto -> { + // 获取日月年用水量和最近的读数 + Map dayMeter = deviceService.selectWaterMeterDay(deviceDto.get("DEVCODE").toString(), date); + if (dayMeter == null) { + deviceDto.put("dayCount", "0"); + } else { + deviceDto.put("dayCount", dayMeter.get("FLOW_ACC_DATE") == null ? "0" : dayMeter.get("FLOW_ACC_DATE").toString()); + } + + Map monthMeter = deviceService.selectWaterMeterMonth(deviceDto.get("DEVCODE").toString(), date.substring(0, 7)); + if (monthMeter == null) { + deviceDto.put("monthCount", "0"); + } else { + deviceDto.put("monthCount", monthMeter.get("FLOW_ACC_MONTH") == null ? "0" : monthMeter.get("FLOW_ACC_MONTH").toString()); + } + + Map totalMeter = deviceService.selectWaterMeterTotal(deviceDto.get("DEVCODE").toString(), date.substring(0, 4)); + if (totalMeter == null) { + deviceDto.put("totalCount", "0"); + } else { + deviceDto.put("totalCount", totalMeter.get("FLOW_ACC_TOTAL") == null ? "0" : totalMeter.get("FLOW_ACC_TOTAL").toString()); + } + + Map meterRec = deviceService.selectLatestWaterMeter(deviceDto.get("DEVCODE").toString()); + if (meterRec == null) { + deviceDto.put("watchNum", "0"); + deviceDto.put("uptime", sdf4.format(new Date())); + } else { + deviceDto.put("watchNum", meterRec.get("FLOW_ACC") == null ? "0" : meterRec.get("FLOW_ACC").toString()); + deviceDto.put("uptime", sdf4.format((Date) meterRec.get("UPTIME"))); + } + + deviceDto.put("fullAreaName", deviceService.getAreaFullNameById(deviceDto.get("AREA").toString())); + }); + + FileInputStream fileInputStream = null; + if (ToolUtil.isEmpty(list)) { + fileInputStream = new FileInputStream(templatePath+"/waterMeterListEmpty.xlsx"); + } else { + fileInputStream = new FileInputStream(templatePath+"/waterMeterListTemplate.xlsx"); + } + + try { + httpServletResponse.setContentType("application/octet-stream"); + httpServletResponse.addHeader("Content-Disposition", " attachment;filename="+"waterMeterList.xlsx" ); + + Map var = new HashMap<>(); + var.put("标题", "设备数据列表"); + 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 = "/count") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index c226fb9..2fb90f8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,6 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords, @Param("isOnline") String isOnline, @Param("areaId") String areaId); + List selectDeviceForMap(@Param("devType") String devType, @Param("keywords") String keywords); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); @@ -69,6 +70,8 @@ List> selectHarmfulDataList(@Param("dataScope") DataScope dataScope, @Param("wellCode") String wellCode, @Param("beginTime") String beginTime, @Param("endTime") String endTime); + List> selectWaterMeterDeviceListScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page> page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords, @Param("areaId") String areaId); + Map selectWaterMeterDay(@Param("devcode") String devcode, @Param("date") String date); Map selectWaterMeterMonth(@Param("devcode") String devcode, @Param("month") String month); 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 cf01f62..87ddf17 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 @@ -952,6 +952,27 @@ ORDER BY uptime asc + + + + + + + + + + + +