Prechádzať zdrojové kódy

告警列表、报警历史、维修人员列表的数据导出

zhj 2 rokov pred
rodič
commit
8d26c08fb8

+ 138 - 9
src/main/java/com/welampiot/controller/AlarmController.java

@@ -4,6 +4,7 @@ import com.welampiot.common.BaseResult;
 import com.welampiot.common.InterfaceResultEnum;
 import com.welampiot.dto.*;
 import com.welampiot.service.*;
+import com.welampiot.utils.ExcelUtil;
 import com.welampiot.utils.ToolUtils;
 import com.welampiot.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -69,25 +70,60 @@ public class AlarmController {
      */
     @RequestMapping(value = "getList", method = RequestMethod.POST)
     public BaseResult<?> getList(HttpServletRequest request) {
-        int version = (int) toolUtils.getRequestContent(request,"version",1);
-        int status = (int) toolUtils.getRequestContent(request,"status",1);
-        int devType = (int) toolUtils.getRequestContent(request,"devType",1);
+        Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
+        Integer status = (Integer) toolUtils.getRequestContent(request,"status",1);
+        Integer devType = (Integer) toolUtils.getRequestContent(request,"devType",1);
+        Integer areaId = (Integer) toolUtils.getRequestContent(request,"areaId",1);
+        Integer sectionId = (Integer) toolUtils.getRequestContent(request,"sectionId",1);
+        Integer download = (Integer) toolUtils.getRequestContent(request,"download",1);
         int page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
         int count = request.getParameter("count") == null ? 16 : Integer.parseInt(request.getParameter("count"));
         String keyword = (String) toolUtils.getRequestContent(request,"keyword",2);
 
         AllAlarmInfoLogVO allAlarmInfoLogVO = new AllAlarmInfoLogVO();
         allAlarmInfoLogVO.setVersion(version);
-        allAlarmInfoLogVO.setOffset(count * (page - 1));
-        allAlarmInfoLogVO.setLimit(count);
         allAlarmInfoLogVO.setStatus(status);
         allAlarmInfoLogVO.setDevType(devType);
         allAlarmInfoLogVO.setKeyword(keyword);
+        allAlarmInfoLogVO.setAreaId(areaId);
+        allAlarmInfoLogVO.setSectionId(sectionId);
         allAlarmInfoLogVO.setSectionList(toolUtils.getSectionList(request));
-        List<AllAlarmInfoLogDTO> allAlarmInfoLogList = allAlarmInfoLogService.getListByAllAlarmInfoLogVO(allAlarmInfoLogVO);
+        if (download == 0) {
+            allAlarmInfoLogVO.setOffset(count * (page - 1));
+            allAlarmInfoLogVO.setLimit(count);
+        }
+        List<AllAlarmInfoLogDTO> alarmList ;
         List<AllAlarmInfoLogDTO> list = new ArrayList<>();
+        switch (devType) {
+            case 5:
+                alarmList = allAlarmInfoLogService.getElectricBoxAlarmListByVO(allAlarmInfoLogVO);
+                break;
+            case 4:
+                alarmList = allAlarmInfoLogService.getWaterImmersionAlarmListByVO(allAlarmInfoLogVO);
+                break;
+            case 3:
+                alarmList = allAlarmInfoLogService.getManholeAlarmListByVO(allAlarmInfoLogVO);
+                break;
+            case 2:
+                alarmList = allAlarmInfoLogService.getLampPoleAlarmListByVO(allAlarmInfoLogVO);
+                break;
+            case 1:
+                alarmList = allAlarmInfoLogService.getLampAlarmListByVO(allAlarmInfoLogVO);
+                break;
+            default:
+                List<AllAlarmInfoLogDTO> eleBoxList = allAlarmInfoLogService.getElectricBoxAlarmListByVO(allAlarmInfoLogVO);
+                List<AllAlarmInfoLogDTO> waterList = allAlarmInfoLogService.getWaterImmersionAlarmListByVO(allAlarmInfoLogVO);
+                List<AllAlarmInfoLogDTO> lampPoleList = allAlarmInfoLogService.getLampPoleAlarmListByVO(allAlarmInfoLogVO);
+                List<AllAlarmInfoLogDTO> lampList = allAlarmInfoLogService.getLampAlarmListByVO(allAlarmInfoLogVO);
+                List<AllAlarmInfoLogDTO> manholeList = allAlarmInfoLogService.getManholeAlarmListByVO(allAlarmInfoLogVO);
+                // 将配电箱、水浸、灯杆、路灯、井盖合并成一个列表
+                alarmList = Stream.of(eleBoxList, waterList, lampPoleList, lampList, manholeList)
+                        .flatMap(Collection::stream)
+                        .collect(Collectors.toList());
+                break;
+        }
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        allAlarmInfoLogList.forEach(allAlarmInfoLogDTO -> {
+        alarmList.forEach(allAlarmInfoLogDTO -> {
             if (allAlarmInfoLogDTO.getArea() == null) {
                 allAlarmInfoLogDTO.setArea("");
             }
@@ -134,6 +170,51 @@ public class AlarmController {
         allAlarmInfoLogVO1.setUnTreatedCount(allAlarmInfoLogService.getUnTreatedCountByStatus(allAlarmInfoLogVO));
         allAlarmInfoLogVO1.setProcessingCount(allAlarmInfoLogService.getProcessingCountByStatus(allAlarmInfoLogVO));
         allAlarmInfoLogVO1.setHandleCount(allAlarmInfoLogService.getHandleCountByStatus(allAlarmInfoLogVO));
+        if (download == 1) {
+            String title;
+            if (version == 0) {
+                title = "序号,设备编号,设备名称,设备类型,行政区,路段,故障类型,故障状态,更新时间";
+            } else if (version == 1) {
+                title = "Serial Number,Device Number,Device Name,Device Type,District," +
+                        "Road Section,Fault Type,Fault Status,Update Time";
+            } else {
+                title = "Порядковый номер,номер оборудования,название оборудования,тип оборудования," +
+                        "административный район,участок дороги, ип неисправности,состояние неисправности,время обновления";
+            }
+            List<String> titleList = Arrays.asList(title.split(","));
+            List<List<String>> contentList = new ArrayList<>();
+            for (AllAlarmInfoLogDTO a : list) {
+                List<String> newString = new ArrayList<>();
+                newString.add(0, String.valueOf(list.indexOf(a) + 1));
+                newString.add(1,a.getNumber());
+                newString.add(2,a.getName());
+                if (a.getDevType() == 4) {
+                    newString.add(3,"配电箱");
+                } else if (a.getDevType() == 3) {
+                    newString.add(3,"水浸");
+                } else if (a.getDevType() == 2) {
+                    newString.add(3,"井盖");
+                } else if (a.getDevType() == 1) {
+                    newString.add(3,"灯杆");
+                } else {
+                    newString.add(3,"路灯");
+                }
+                newString.add(4,a.getArea());
+                newString.add(5,a.getSection());
+                newString.add(6,a.getStrAlarmType());
+                if (a.getStatus() == 2) {
+                    newString.add(7,"已处理");
+                } else if (a.getStatus() == 1) {
+                    newString.add(7,"进行中");
+                } else {
+                    newString.add(7,"未处理");
+                }
+                newString.add(8,a.getUpdateTime());
+                contentList.add(list.indexOf(a),newString);
+            }
+            String path = ExcelUtil.outExcel(titleList, contentList);
+            allAlarmInfoLogVO1.setPath(path);
+        }
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,allAlarmInfoLogVO1);
     }
 
@@ -182,19 +263,22 @@ public class AlarmController {
         Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
         Integer areaId = (Integer) toolUtils.getRequestContent(request,"areaId",1);
         Integer sectionId = (Integer) toolUtils.getRequestContent(request,"sectionId",1);
+        Integer download = (Integer) toolUtils.getRequestContent(request,"download",1);
         String keyword = (String) toolUtils.getRequestContent(request,"keyword",2);
         Integer devType = (Integer) toolUtils.getRequestContent(request,"devType",1);
         int page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
         int count = request.getParameter("count") == null ? 16 : Integer.parseInt(request.getParameter("count"));
 
         AllAlarmInfoLogVO vo = new AllAlarmInfoLogVO();
-        vo.setLimit(count * (page - 1));
-        vo.setOffset(count);
         vo.setSectionId(sectionId);
         vo.setAreaId(areaId);
         vo.setKeyword(keyword);
         vo.setVersion(version);
         vo.setSectionList(toolUtils.getSectionList(request));
+        if (download == 0) {
+            vo.setLimit(count * (page - 1));
+            vo.setOffset(count);
+        }
         List<AllAlarmInfoLogDTO> alarmList;
         List<AllAlarmInfoLogDTO> list = new ArrayList<>();
         Integer total;
@@ -261,6 +345,51 @@ public class AlarmController {
         AllAlarmInfoLogVO allAlarmInfoLogVO = new AllAlarmInfoLogVO();
         allAlarmInfoLogVO.setList(list);
         allAlarmInfoLogVO.setTotal((int) Math.ceil(total / Double.parseDouble(String.valueOf(count))));
+        if (download == 1) {
+            String title;
+            if (version == 0) {
+                title = "序号,设备编号,设备名称,设备类型,行政区,路段,故障类型,故障状态,更新时间";
+            } else if (version == 1) {
+                title = "Serial Number,Device Number,Device Name,Device Type,District," +
+                        "Road Section,Fault Type,Fault Status,Update Time";
+            } else {
+                title = "Порядковый номер,номер оборудования,название оборудования,тип оборудования," +
+                        "административный район,участок дороги, ип неисправности,состояние неисправности,время обновления";
+            }
+            List<String> titleList = Arrays.asList(title.split(","));
+            List<List<String>> contentList = new ArrayList<>();
+            for (AllAlarmInfoLogDTO a : list) {
+                List<String> newString = new ArrayList<>();
+                newString.add(0, String.valueOf(list.indexOf(a) + 1));
+                newString.add(1,a.getNumber());
+                newString.add(2,a.getName());
+                if (a.getDevType() == 4) {
+                    newString.add(3,"配电箱");
+                } else if (a.getDevType() == 3) {
+                    newString.add(3,"水浸");
+                } else if (a.getDevType() == 2) {
+                    newString.add(3,"井盖");
+                } else if (a.getDevType() == 1) {
+                    newString.add(3,"灯杆");
+                } else {
+                    newString.add(3,"路灯");
+                }
+                newString.add(4,a.getArea());
+                newString.add(5,a.getSection());
+                newString.add(6,a.getStrAlarmType());
+                if (a.getStatus() == 2) {
+                    newString.add(7,"已处理");
+                } else if (a.getStatus() == 1) {
+                    newString.add(7,"进行中");
+                } else {
+                    newString.add(7,"未处理");
+                }
+                newString.add(8,a.getUpdateTime());
+                contentList.add(list.indexOf(a),newString);
+            }
+            String path = ExcelUtil.outExcel(titleList, contentList);
+            allAlarmInfoLogVO.setPath(path);
+        }
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,allAlarmInfoLogVO);
     }
 

+ 43 - 10
src/main/java/com/welampiot/controller/RepairController.java

@@ -6,6 +6,7 @@ import com.welampiot.dto.RepairInfoDTO;
 import com.welampiot.dto.RepairPersonnelDTO;
 import com.welampiot.service.RepairInfoService;
 import com.welampiot.service.RepairPersonnelService;
+import com.welampiot.utils.ExcelUtil;
 import com.welampiot.utils.ToolUtils;
 import com.welampiot.vo.RepairInfoVO;
 import com.welampiot.vo.RepairPersonnelDetailsVO;
@@ -17,6 +18,9 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -47,8 +51,9 @@ public class RepairController {
      * @return 维修人员list
      */
     @RequestMapping(value = "getList", method = RequestMethod.POST)
-    public BaseResult getList(HttpServletRequest request) {
-        int version = (int) toolUtils.getRequestContent(request,"version",1);
+    public BaseResult<?> getList(HttpServletRequest request) {
+        Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
+        Integer download = (Integer) toolUtils.getRequestContent(request,"download",1);
         int page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
         int count = request.getParameter("count") == null ? 16 : Integer.parseInt(request.getParameter("count"));
         String username = (String) toolUtils.getRequestContent(request,"username",2);
@@ -57,12 +62,40 @@ public class RepairController {
         String keyword = (String) toolUtils.getRequestContent(request,"keyword",2);
 
         RepairPersonnelDTO dto = new RepairPersonnelDTO();
-        dto.setPage(count * (page - 1));
-        dto.setCount(count);
+        if (download == 0) {
+            dto.setPage(count * (page - 1));
+            dto.setCount(count);
+        }
         dto.setKeyword(keyword);
         Integer userId = repairPersonnelService.getUserIdByUsername(username);
         dto.setOwnId(userId);
         RepairPersonnelVO repairPersonnelVO = repairPersonnelService.getListByRepairPersonnelDTO(dto);
+        if (download == 1) {
+            List<RepairPersonnelDTO> list = repairPersonnelVO.getList();
+            String title;
+            if (version == 0) {
+                title = "姓名,公司,部门,工号,手机,邮箱,账号名称";
+            } else if (version == 1) {
+                title = "Name,Company,Department,Job Number,Mobile Phone,Email,Account Name";
+            }else {
+                title = "Имя,компания,отдел,номер,телефон,почтовый ящик,имя счета";
+            }
+            List<String> titleList = Arrays.asList(title.split(","));
+            List<List<String>> contentList = new ArrayList<>();
+            for (RepairPersonnelDTO r : list) {
+                List<String> newString = new ArrayList<>();
+                newString.add(0,r.getName());
+                newString.add(1,r.getCompany());
+                newString.add(2,r.getSection());
+                newString.add(3,r.getNumber());
+                newString.add(4,r.getPhone());
+                newString.add(5,r.getEmail());
+                newString.add(6,r.getUsername());
+                contentList.add(list.indexOf(r),newString);
+            }
+            String path = ExcelUtil.outExcel(titleList, contentList);
+            repairPersonnelVO.setPath(path);
+        }
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,repairPersonnelVO);
     }
 
@@ -72,7 +105,7 @@ public class RepairController {
      * @return 维修人员详情对象 RepairPersonnelDetailsVO
      */
     @RequestMapping(value = "/details", method = RequestMethod.POST)
-    public BaseResult details(HttpServletRequest request) {
+    public BaseResult<?> details(HttpServletRequest request) {
         int version = (int) toolUtils.getRequestContent(request,"version",1);
         int userId = (int) toolUtils.getRequestContent(request,"userId",1);
         if (userId == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
@@ -87,7 +120,7 @@ public class RepairController {
      * @return 更新维修人员数据
      */
     @RequestMapping(value = "save", method = RequestMethod.POST)
-    public BaseResult save(HttpServletRequest request) {
+    public BaseResult<?> save(HttpServletRequest request) {
         int version = (int) toolUtils.getRequestContent(request,"version",1);
         int id = (int) toolUtils.getRequestContent(request,"id",1);
         int groupId = (int) toolUtils.getRequestContent(request,"groupId",1);
@@ -165,7 +198,7 @@ public class RepairController {
      * @return 删除成功
      */
     @RequestMapping(value = "/del", method = RequestMethod.POST)
-    public BaseResult del(HttpServletRequest request){
+    public BaseResult<?> del(HttpServletRequest request){
         int version = (int) toolUtils.getRequestContent(request,"version",1);
         String id = request.getParameter("id");
         if (id == null || id.length() == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
@@ -183,7 +216,7 @@ public class RepairController {
      * @return 维修记录
      */
     @RequestMapping(value = "/repairInfo", method = RequestMethod.POST)
-    public BaseResult repairInfo(HttpServletRequest request) {
+    public BaseResult<?> repairInfo(HttpServletRequest request) {
         int version = (int) toolUtils.getRequestContent(request,"version",1);
         int id = (int) toolUtils.getRequestContent(request,"id",1);
         int page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
@@ -204,7 +237,7 @@ public class RepairController {
      * @return 返回维修人员下拉列表
      */
     @RequestMapping(value = "/nav", method = RequestMethod.POST)
-    public BaseResult nav(HttpServletRequest request) {
+    public BaseResult<?> nav(HttpServletRequest request) {
         int version = (int) toolUtils.getRequestContent(request,"version",1);
         String username = request.getParameter("username");
         if (username == null || username.length() == 0)
@@ -220,7 +253,7 @@ public class RepairController {
      * @return 操作成功
      */
     @RequestMapping(value = "/delInfo", method = RequestMethod.POST)
-    public BaseResult delInfo(HttpServletRequest request) {
+    public BaseResult<?> delInfo(HttpServletRequest request) {
         int version = (int) toolUtils.getRequestContent(request,"version",1);
         String id = request.getParameter("id");
         if (id == null || id.length() == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);

+ 15 - 1
src/main/java/com/welampiot/utils/ExcelUtil.java

@@ -1,5 +1,8 @@
 package com.welampiot.utils;
 
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.VerticalAlignment;
 import org.apache.poi.xssf.usermodel.XSSFCell;
 import org.apache.poi.xssf.usermodel.XSSFRow;
 import org.apache.poi.xssf.usermodel.XSSFSheet;
@@ -21,18 +24,29 @@ public class ExcelUtil {
         XSSFWorkbook sheets = new XSSFWorkbook();
         XSSFSheet sheet = sheets.createSheet();
 
+        // 冻结第一行
+        sheet.createFreezePane(0,1,0,1);
+
+        // 创建居中显示的单元格样式
+        CellStyle style = sheets.createCellStyle();
+        style.setAlignment(HorizontalAlignment.CENTER);
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+
         // 创建表头,也就是第一行
         XSSFRow row = sheet.createRow(0);
         for (int i = 0; i < titleList.size(); i++) {
             XSSFCell cell = row.createCell(i);
             cell.setCellValue(titleList.get(i));
+            cell.setCellStyle(style); // 设置单元格为居中显示样式
         }
 
         //创建表内容,从第二行开始
         for (int i = 0; i < contentList.size(); i++) {
             row = sheet.createRow(i + 1);
             for (int j = 0; j < contentList.get(i).size(); j++) {
-                row.createCell(j).setCellValue(contentList.get(i).get(j));
+                XSSFCell cell = row.createCell(j);
+                cell.setCellValue(contentList.get(i).get(j));
+                cell.setCellStyle(style); // 设置单元格为居中显示样式
             }
         }
         long l = System.currentTimeMillis();

+ 1 - 0
src/main/java/com/welampiot/vo/AllAlarmInfoLogVO.java

@@ -23,5 +23,6 @@ public class AllAlarmInfoLogVO {
     private Integer cityId;
     private Integer provinceId;
     private String alarmType;
+    private String path;
     private List<AllAlarmInfoLogDTO> list;
 }

+ 2 - 0
src/main/java/com/welampiot/vo/RepairPersonnelVO.java

@@ -20,5 +20,7 @@ public class RepairPersonnelVO implements Serializable {
 
     private List<RepairPersonnelDTO> list;
 
+    private String path;
+
     private static final long serialVersionUID = 1L;
 }