diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java index 6b35150..7b8105e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -41,15 +41,19 @@ private String visitReason; @ExcelProperty("访问楼栋") private String visitPosition; + @TableField(exist = false) + private String visitPositionName; @ExcelProperty("备注") private String remarks; @ExcelProperty("状态") private String status; - @ExcelProperty("被访人工号") + @TableField(exist = false) + private String statusName; + @ExcelProperty("申请者工号") private String staffCode; - @ExcelProperty("被访人姓名") + @ExcelProperty("申请者姓名") private String staffName; - @ExcelProperty("被访人联系方式") + @ExcelProperty("申请者联系方式") private String staffPhone; @ExcelProperty("访问开始时间") private String inTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java index 6b35150..7b8105e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -41,15 +41,19 @@ private String visitReason; @ExcelProperty("访问楼栋") private String visitPosition; + @TableField(exist = false) + private String visitPositionName; @ExcelProperty("备注") private String remarks; @ExcelProperty("状态") private String status; - @ExcelProperty("被访人工号") + @TableField(exist = false) + private String statusName; + @ExcelProperty("申请者工号") private String staffCode; - @ExcelProperty("被访人姓名") + @ExcelProperty("申请者姓名") private String staffName; - @ExcelProperty("被访人联系方式") + @ExcelProperty("申请者联系方式") private String staffPhone; @ExcelProperty("访问开始时间") private String inTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java index 0647185..22f2075 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -5,7 +5,6 @@ import com.casic.missiles.modular.dto.*; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import java.util.List; @@ -16,7 +15,9 @@ */ public interface DeviceInfoService extends IService { - List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest); + + List deviceInfoList(DeviceInfoRequest deviceInfoRequest); Object addDeviceInfo(DeviceInfo deviceInfo); @@ -36,7 +37,7 @@ DeviceRepairLog selectById(Long id); - List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); Object addGateGroupDTO(GateGroupDTO gateGroupDTO); @@ -44,7 +45,11 @@ Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); - List selectDeviceCodesByIds(List ids); + List selectDeviceCodesById(Long ids); List selectIndexCodesByCodes(List deviceCodes); + + List selectRepairLogByCode(String devCode); + + int updateBatchGateGroupStatus(List deviceCodes, String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java index 6b35150..7b8105e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -41,15 +41,19 @@ private String visitReason; @ExcelProperty("访问楼栋") private String visitPosition; + @TableField(exist = false) + private String visitPositionName; @ExcelProperty("备注") private String remarks; @ExcelProperty("状态") private String status; - @ExcelProperty("被访人工号") + @TableField(exist = false) + private String statusName; + @ExcelProperty("申请者工号") private String staffCode; - @ExcelProperty("被访人姓名") + @ExcelProperty("申请者姓名") private String staffName; - @ExcelProperty("被访人联系方式") + @ExcelProperty("申请者联系方式") private String staffPhone; @ExcelProperty("访问开始时间") private String inTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java index 0647185..22f2075 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -5,7 +5,6 @@ import com.casic.missiles.modular.dto.*; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import java.util.List; @@ -16,7 +15,9 @@ */ public interface DeviceInfoService extends IService { - List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest); + + List deviceInfoList(DeviceInfoRequest deviceInfoRequest); Object addDeviceInfo(DeviceInfo deviceInfo); @@ -36,7 +37,7 @@ DeviceRepairLog selectById(Long id); - List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); Object addGateGroupDTO(GateGroupDTO gateGroupDTO); @@ -44,7 +45,11 @@ Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); - List selectDeviceCodesByIds(List ids); + List selectDeviceCodesById(Long ids); List selectIndexCodesByCodes(List deviceCodes); + + List selectRepairLogByCode(String devCode); + + int updateBatchGateGroupStatus(List deviceCodes, String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java index b7ebe90..2ba97b0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.dto.VisitorRequest; import com.casic.missiles.modular.model.VisitInfo; @@ -11,7 +12,7 @@ * @Author: wangpeng * @Date: 2022/7/28 19:40 */ -public interface VisitService { +public interface VisitService extends IService { List visitInfoListPage(Page page, VisitorRequest visitorRequest); VisitInfo visitInfoDetail(String id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java index 6b35150..7b8105e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -41,15 +41,19 @@ private String visitReason; @ExcelProperty("访问楼栋") private String visitPosition; + @TableField(exist = false) + private String visitPositionName; @ExcelProperty("备注") private String remarks; @ExcelProperty("状态") private String status; - @ExcelProperty("被访人工号") + @TableField(exist = false) + private String statusName; + @ExcelProperty("申请者工号") private String staffCode; - @ExcelProperty("被访人姓名") + @ExcelProperty("申请者姓名") private String staffName; - @ExcelProperty("被访人联系方式") + @ExcelProperty("申请者联系方式") private String staffPhone; @ExcelProperty("访问开始时间") private String inTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java index 0647185..22f2075 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -5,7 +5,6 @@ import com.casic.missiles.modular.dto.*; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import java.util.List; @@ -16,7 +15,9 @@ */ public interface DeviceInfoService extends IService { - List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest); + + List deviceInfoList(DeviceInfoRequest deviceInfoRequest); Object addDeviceInfo(DeviceInfo deviceInfo); @@ -36,7 +37,7 @@ DeviceRepairLog selectById(Long id); - List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); Object addGateGroupDTO(GateGroupDTO gateGroupDTO); @@ -44,7 +45,11 @@ Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); - List selectDeviceCodesByIds(List ids); + List selectDeviceCodesById(Long ids); List selectIndexCodesByCodes(List deviceCodes); + + List selectRepairLogByCode(String devCode); + + int updateBatchGateGroupStatus(List deviceCodes, String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java index b7ebe90..2ba97b0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.dto.VisitorRequest; import com.casic.missiles.modular.model.VisitInfo; @@ -11,7 +12,7 @@ * @Author: wangpeng * @Date: 2022/7/28 19:40 */ -public interface VisitService { +public interface VisitService extends IService { List visitInfoListPage(Page page, VisitorRequest visitorRequest); VisitInfo visitInfoDetail(String id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java index 6fa536c..7a25099 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.dao.CaseInfoMapper; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; import com.casic.missiles.modular.dto.CaseInfoRequest; import com.casic.missiles.modular.enums.SecurityEventDict; import com.casic.missiles.modular.model.CaseInfo; @@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; import org.springframework.validation.Validator; @@ -35,6 +38,12 @@ @Autowired private CaseInfoMapper caseInfoMapper; + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Autowired + private HazardLevelMapper hazardLevelMapper; + @Resource private Validator validator; @@ -68,6 +77,8 @@ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); List list = new ArrayList<>(); if (!CollectionUtil.isEmpty(results)) { + List categoryList = categoryLevelMapper.selectCategoryNameList(); + List hazardList = hazardLevelMapper.selectHazardName(); final Integer[] index = {0}; results.forEach(busConcentrator -> { validator.validate(busConcentrator, beanPropertyBindingResult); @@ -81,14 +92,21 @@ ); return; } -// if (new Long(0L).equals(busConcentrator.getDeptid())) { -// busConcentrator.setDeptid(commonPermissionService.getAuthService().getLoginUser().getDeptId()); -// } else { -// if (StrUtil.isEmpty(commonPermissionService.getDeptService().getDeptName(busConcentrator.getDeptid()))) { -// list.add(" 第" + index[0] + "行,权属单位不存在"); -// return; -// } -// } + //事件级别、事件类别校验及编码生成 + if(!categoryList.contains(busConcentrator.getTypeName())){ + list.add(" 第" + index[0] + "行,".concat("事件类别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getTypeName().getBytes()); + busConcentrator.setCategoryLevelCode(s.substring(0,15)); + } + if(!hazardList.contains(busConcentrator.getLevelName())){ + list.add(" 第" + index[0] + "行,".concat("事件级别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getLevelName().getBytes()); + busConcentrator.setHazardLevelCode(s.substring(0,15)); + } if (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { try { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java index 6b35150..7b8105e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -41,15 +41,19 @@ private String visitReason; @ExcelProperty("访问楼栋") private String visitPosition; + @TableField(exist = false) + private String visitPositionName; @ExcelProperty("备注") private String remarks; @ExcelProperty("状态") private String status; - @ExcelProperty("被访人工号") + @TableField(exist = false) + private String statusName; + @ExcelProperty("申请者工号") private String staffCode; - @ExcelProperty("被访人姓名") + @ExcelProperty("申请者姓名") private String staffName; - @ExcelProperty("被访人联系方式") + @ExcelProperty("申请者联系方式") private String staffPhone; @ExcelProperty("访问开始时间") private String inTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java index 0647185..22f2075 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -5,7 +5,6 @@ import com.casic.missiles.modular.dto.*; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import java.util.List; @@ -16,7 +15,9 @@ */ public interface DeviceInfoService extends IService { - List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest); + + List deviceInfoList(DeviceInfoRequest deviceInfoRequest); Object addDeviceInfo(DeviceInfo deviceInfo); @@ -36,7 +37,7 @@ DeviceRepairLog selectById(Long id); - List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); Object addGateGroupDTO(GateGroupDTO gateGroupDTO); @@ -44,7 +45,11 @@ Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); - List selectDeviceCodesByIds(List ids); + List selectDeviceCodesById(Long ids); List selectIndexCodesByCodes(List deviceCodes); + + List selectRepairLogByCode(String devCode); + + int updateBatchGateGroupStatus(List deviceCodes, String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java index b7ebe90..2ba97b0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.dto.VisitorRequest; import com.casic.missiles.modular.model.VisitInfo; @@ -11,7 +12,7 @@ * @Author: wangpeng * @Date: 2022/7/28 19:40 */ -public interface VisitService { +public interface VisitService extends IService { List visitInfoListPage(Page page, VisitorRequest visitorRequest); VisitInfo visitInfoDetail(String id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java index 6fa536c..7a25099 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.dao.CaseInfoMapper; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; import com.casic.missiles.modular.dto.CaseInfoRequest; import com.casic.missiles.modular.enums.SecurityEventDict; import com.casic.missiles.modular.model.CaseInfo; @@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; import org.springframework.validation.Validator; @@ -35,6 +38,12 @@ @Autowired private CaseInfoMapper caseInfoMapper; + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Autowired + private HazardLevelMapper hazardLevelMapper; + @Resource private Validator validator; @@ -68,6 +77,8 @@ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); List list = new ArrayList<>(); if (!CollectionUtil.isEmpty(results)) { + List categoryList = categoryLevelMapper.selectCategoryNameList(); + List hazardList = hazardLevelMapper.selectHazardName(); final Integer[] index = {0}; results.forEach(busConcentrator -> { validator.validate(busConcentrator, beanPropertyBindingResult); @@ -81,14 +92,21 @@ ); return; } -// if (new Long(0L).equals(busConcentrator.getDeptid())) { -// busConcentrator.setDeptid(commonPermissionService.getAuthService().getLoginUser().getDeptId()); -// } else { -// if (StrUtil.isEmpty(commonPermissionService.getDeptService().getDeptName(busConcentrator.getDeptid()))) { -// list.add(" 第" + index[0] + "行,权属单位不存在"); -// return; -// } -// } + //事件级别、事件类别校验及编码生成 + if(!categoryList.contains(busConcentrator.getTypeName())){ + list.add(" 第" + index[0] + "行,".concat("事件类别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getTypeName().getBytes()); + busConcentrator.setCategoryLevelCode(s.substring(0,15)); + } + if(!hazardList.contains(busConcentrator.getLevelName())){ + list.add(" 第" + index[0] + "行,".concat("事件级别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getLevelName().getBytes()); + busConcentrator.setHazardLevelCode(s.substring(0,15)); + } if (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { try { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java index be006ea..0755c85 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -49,6 +50,8 @@ @Override public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + String s = DigestUtils.md5DigestAsHex(caseCategoryLevel.getName().getBytes()); + caseCategoryLevel.setCode(s.substring(0,15)); CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); if(!Objects.isNull(categoryLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java index 6b35150..7b8105e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -41,15 +41,19 @@ private String visitReason; @ExcelProperty("访问楼栋") private String visitPosition; + @TableField(exist = false) + private String visitPositionName; @ExcelProperty("备注") private String remarks; @ExcelProperty("状态") private String status; - @ExcelProperty("被访人工号") + @TableField(exist = false) + private String statusName; + @ExcelProperty("申请者工号") private String staffCode; - @ExcelProperty("被访人姓名") + @ExcelProperty("申请者姓名") private String staffName; - @ExcelProperty("被访人联系方式") + @ExcelProperty("申请者联系方式") private String staffPhone; @ExcelProperty("访问开始时间") private String inTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java index 0647185..22f2075 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -5,7 +5,6 @@ import com.casic.missiles.modular.dto.*; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import java.util.List; @@ -16,7 +15,9 @@ */ public interface DeviceInfoService extends IService { - List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest); + + List deviceInfoList(DeviceInfoRequest deviceInfoRequest); Object addDeviceInfo(DeviceInfo deviceInfo); @@ -36,7 +37,7 @@ DeviceRepairLog selectById(Long id); - List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); Object addGateGroupDTO(GateGroupDTO gateGroupDTO); @@ -44,7 +45,11 @@ Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); - List selectDeviceCodesByIds(List ids); + List selectDeviceCodesById(Long ids); List selectIndexCodesByCodes(List deviceCodes); + + List selectRepairLogByCode(String devCode); + + int updateBatchGateGroupStatus(List deviceCodes, String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java index b7ebe90..2ba97b0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.dto.VisitorRequest; import com.casic.missiles.modular.model.VisitInfo; @@ -11,7 +12,7 @@ * @Author: wangpeng * @Date: 2022/7/28 19:40 */ -public interface VisitService { +public interface VisitService extends IService { List visitInfoListPage(Page page, VisitorRequest visitorRequest); VisitInfo visitInfoDetail(String id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java index 6fa536c..7a25099 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.dao.CaseInfoMapper; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; import com.casic.missiles.modular.dto.CaseInfoRequest; import com.casic.missiles.modular.enums.SecurityEventDict; import com.casic.missiles.modular.model.CaseInfo; @@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; import org.springframework.validation.Validator; @@ -35,6 +38,12 @@ @Autowired private CaseInfoMapper caseInfoMapper; + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Autowired + private HazardLevelMapper hazardLevelMapper; + @Resource private Validator validator; @@ -68,6 +77,8 @@ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); List list = new ArrayList<>(); if (!CollectionUtil.isEmpty(results)) { + List categoryList = categoryLevelMapper.selectCategoryNameList(); + List hazardList = hazardLevelMapper.selectHazardName(); final Integer[] index = {0}; results.forEach(busConcentrator -> { validator.validate(busConcentrator, beanPropertyBindingResult); @@ -81,14 +92,21 @@ ); return; } -// if (new Long(0L).equals(busConcentrator.getDeptid())) { -// busConcentrator.setDeptid(commonPermissionService.getAuthService().getLoginUser().getDeptId()); -// } else { -// if (StrUtil.isEmpty(commonPermissionService.getDeptService().getDeptName(busConcentrator.getDeptid()))) { -// list.add(" 第" + index[0] + "行,权属单位不存在"); -// return; -// } -// } + //事件级别、事件类别校验及编码生成 + if(!categoryList.contains(busConcentrator.getTypeName())){ + list.add(" 第" + index[0] + "行,".concat("事件类别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getTypeName().getBytes()); + busConcentrator.setCategoryLevelCode(s.substring(0,15)); + } + if(!hazardList.contains(busConcentrator.getLevelName())){ + list.add(" 第" + index[0] + "行,".concat("事件级别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getLevelName().getBytes()); + busConcentrator.setHazardLevelCode(s.substring(0,15)); + } if (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { try { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java index be006ea..0755c85 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -49,6 +50,8 @@ @Override public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + String s = DigestUtils.md5DigestAsHex(caseCategoryLevel.getName().getBytes()); + caseCategoryLevel.setCode(s.substring(0,15)); CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); if(!Objects.isNull(categoryLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java index 9d9c731..2f2b9e3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -65,12 +66,12 @@ private GroupDeviceService groupDeviceService; @Override - public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + public List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest) { try { List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); pageList.forEach(device ->{ - device.setDevType(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); - device.setStatus(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); + device.setDevTypeName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); + device.setStatusName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); device.setPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, device.getPosition())); device.setAreaName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_AREA, device.getArea())); device.setIsKeyAreaName(dictService.getDictNameByCode(SecurityEventDict.IS_KEY_AREA, device.getIsKeyArea())); @@ -83,6 +84,12 @@ } @Override + public List deviceInfoList(DeviceInfoRequest deviceInfoRequest) { + List list = deviceInfoMapper.getDeviceInfoList(deviceInfoRequest); + return list; + } + + @Override public Object addDeviceInfo(DeviceInfo deviceInfo) { DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); if(!Objects.isNull(device)){ @@ -186,6 +193,7 @@ DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); deviceRepairLogDTO.setDeviceCode(k); deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setIp(v.get(0).getIp()); deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); deviceRepairLogDTO.setFailNumber(v.size()); deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); @@ -211,7 +219,7 @@ } @Override - public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { try { List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); pageList.forEach(gateGroup ->{ @@ -293,9 +301,11 @@ } @Override - public List selectDeviceCodesByIds(List ids) { + public List selectDeviceCodesById(Long id) { //关联表查询 - List groupDevices = groupDeviceMapper.selectBatchIds(ids); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("gate_group_id", id); + List groupDevices = groupDeviceMapper.selectList(wrapper); List collect = groupDevices.stream().distinct().collect(Collectors.toList()); List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); return deviceCodes; @@ -307,5 +317,18 @@ return indexCodes; } + @Override + public List selectRepairLogByCode(String devCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("device_code", devCode); + List deviceRepairLogs = deviceRepairLogMapper.selectList(queryWrapper); + return deviceRepairLogs; + } + + @Override + public int updateBatchGateGroupStatus(List deviceCodes, String status) { + return deviceInfoMapper.updateStatusBatchByCodes(deviceCodes, status); + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java index 6b35150..7b8105e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -41,15 +41,19 @@ private String visitReason; @ExcelProperty("访问楼栋") private String visitPosition; + @TableField(exist = false) + private String visitPositionName; @ExcelProperty("备注") private String remarks; @ExcelProperty("状态") private String status; - @ExcelProperty("被访人工号") + @TableField(exist = false) + private String statusName; + @ExcelProperty("申请者工号") private String staffCode; - @ExcelProperty("被访人姓名") + @ExcelProperty("申请者姓名") private String staffName; - @ExcelProperty("被访人联系方式") + @ExcelProperty("申请者联系方式") private String staffPhone; @ExcelProperty("访问开始时间") private String inTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java index 0647185..22f2075 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -5,7 +5,6 @@ import com.casic.missiles.modular.dto.*; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import java.util.List; @@ -16,7 +15,9 @@ */ public interface DeviceInfoService extends IService { - List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest); + + List deviceInfoList(DeviceInfoRequest deviceInfoRequest); Object addDeviceInfo(DeviceInfo deviceInfo); @@ -36,7 +37,7 @@ DeviceRepairLog selectById(Long id); - List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); Object addGateGroupDTO(GateGroupDTO gateGroupDTO); @@ -44,7 +45,11 @@ Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); - List selectDeviceCodesByIds(List ids); + List selectDeviceCodesById(Long ids); List selectIndexCodesByCodes(List deviceCodes); + + List selectRepairLogByCode(String devCode); + + int updateBatchGateGroupStatus(List deviceCodes, String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java index b7ebe90..2ba97b0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.dto.VisitorRequest; import com.casic.missiles.modular.model.VisitInfo; @@ -11,7 +12,7 @@ * @Author: wangpeng * @Date: 2022/7/28 19:40 */ -public interface VisitService { +public interface VisitService extends IService { List visitInfoListPage(Page page, VisitorRequest visitorRequest); VisitInfo visitInfoDetail(String id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java index 6fa536c..7a25099 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.dao.CaseInfoMapper; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; import com.casic.missiles.modular.dto.CaseInfoRequest; import com.casic.missiles.modular.enums.SecurityEventDict; import com.casic.missiles.modular.model.CaseInfo; @@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; import org.springframework.validation.Validator; @@ -35,6 +38,12 @@ @Autowired private CaseInfoMapper caseInfoMapper; + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Autowired + private HazardLevelMapper hazardLevelMapper; + @Resource private Validator validator; @@ -68,6 +77,8 @@ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); List list = new ArrayList<>(); if (!CollectionUtil.isEmpty(results)) { + List categoryList = categoryLevelMapper.selectCategoryNameList(); + List hazardList = hazardLevelMapper.selectHazardName(); final Integer[] index = {0}; results.forEach(busConcentrator -> { validator.validate(busConcentrator, beanPropertyBindingResult); @@ -81,14 +92,21 @@ ); return; } -// if (new Long(0L).equals(busConcentrator.getDeptid())) { -// busConcentrator.setDeptid(commonPermissionService.getAuthService().getLoginUser().getDeptId()); -// } else { -// if (StrUtil.isEmpty(commonPermissionService.getDeptService().getDeptName(busConcentrator.getDeptid()))) { -// list.add(" 第" + index[0] + "行,权属单位不存在"); -// return; -// } -// } + //事件级别、事件类别校验及编码生成 + if(!categoryList.contains(busConcentrator.getTypeName())){ + list.add(" 第" + index[0] + "行,".concat("事件类别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getTypeName().getBytes()); + busConcentrator.setCategoryLevelCode(s.substring(0,15)); + } + if(!hazardList.contains(busConcentrator.getLevelName())){ + list.add(" 第" + index[0] + "行,".concat("事件级别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getLevelName().getBytes()); + busConcentrator.setHazardLevelCode(s.substring(0,15)); + } if (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { try { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java index be006ea..0755c85 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -49,6 +50,8 @@ @Override public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + String s = DigestUtils.md5DigestAsHex(caseCategoryLevel.getName().getBytes()); + caseCategoryLevel.setCode(s.substring(0,15)); CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); if(!Objects.isNull(categoryLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java index 9d9c731..2f2b9e3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -65,12 +66,12 @@ private GroupDeviceService groupDeviceService; @Override - public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + public List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest) { try { List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); pageList.forEach(device ->{ - device.setDevType(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); - device.setStatus(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); + device.setDevTypeName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); + device.setStatusName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); device.setPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, device.getPosition())); device.setAreaName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_AREA, device.getArea())); device.setIsKeyAreaName(dictService.getDictNameByCode(SecurityEventDict.IS_KEY_AREA, device.getIsKeyArea())); @@ -83,6 +84,12 @@ } @Override + public List deviceInfoList(DeviceInfoRequest deviceInfoRequest) { + List list = deviceInfoMapper.getDeviceInfoList(deviceInfoRequest); + return list; + } + + @Override public Object addDeviceInfo(DeviceInfo deviceInfo) { DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); if(!Objects.isNull(device)){ @@ -186,6 +193,7 @@ DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); deviceRepairLogDTO.setDeviceCode(k); deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setIp(v.get(0).getIp()); deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); deviceRepairLogDTO.setFailNumber(v.size()); deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); @@ -211,7 +219,7 @@ } @Override - public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { try { List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); pageList.forEach(gateGroup ->{ @@ -293,9 +301,11 @@ } @Override - public List selectDeviceCodesByIds(List ids) { + public List selectDeviceCodesById(Long id) { //关联表查询 - List groupDevices = groupDeviceMapper.selectBatchIds(ids); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("gate_group_id", id); + List groupDevices = groupDeviceMapper.selectList(wrapper); List collect = groupDevices.stream().distinct().collect(Collectors.toList()); List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); return deviceCodes; @@ -307,5 +317,18 @@ return indexCodes; } + @Override + public List selectRepairLogByCode(String devCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("device_code", devCode); + List deviceRepairLogs = deviceRepairLogMapper.selectList(queryWrapper); + return deviceRepairLogs; + } + + @Override + public int updateBatchGateGroupStatus(List deviceCodes, String status) { + return deviceInfoMapper.updateStatusBatchByCodes(deviceCodes, status); + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java index 40e9dae..529eb74 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -39,6 +40,8 @@ @Override public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + String s = DigestUtils.md5DigestAsHex(caseHazardLevel.getName().getBytes()); + caseHazardLevel.setCode(s.substring(0,15)); CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); if(!Objects.isNull(hazardLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java index 6b35150..7b8105e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -41,15 +41,19 @@ private String visitReason; @ExcelProperty("访问楼栋") private String visitPosition; + @TableField(exist = false) + private String visitPositionName; @ExcelProperty("备注") private String remarks; @ExcelProperty("状态") private String status; - @ExcelProperty("被访人工号") + @TableField(exist = false) + private String statusName; + @ExcelProperty("申请者工号") private String staffCode; - @ExcelProperty("被访人姓名") + @ExcelProperty("申请者姓名") private String staffName; - @ExcelProperty("被访人联系方式") + @ExcelProperty("申请者联系方式") private String staffPhone; @ExcelProperty("访问开始时间") private String inTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java index 0647185..22f2075 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -5,7 +5,6 @@ import com.casic.missiles.modular.dto.*; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import java.util.List; @@ -16,7 +15,9 @@ */ public interface DeviceInfoService extends IService { - List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest); + + List deviceInfoList(DeviceInfoRequest deviceInfoRequest); Object addDeviceInfo(DeviceInfo deviceInfo); @@ -36,7 +37,7 @@ DeviceRepairLog selectById(Long id); - List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); Object addGateGroupDTO(GateGroupDTO gateGroupDTO); @@ -44,7 +45,11 @@ Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); - List selectDeviceCodesByIds(List ids); + List selectDeviceCodesById(Long ids); List selectIndexCodesByCodes(List deviceCodes); + + List selectRepairLogByCode(String devCode); + + int updateBatchGateGroupStatus(List deviceCodes, String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java index b7ebe90..2ba97b0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.dto.VisitorRequest; import com.casic.missiles.modular.model.VisitInfo; @@ -11,7 +12,7 @@ * @Author: wangpeng * @Date: 2022/7/28 19:40 */ -public interface VisitService { +public interface VisitService extends IService { List visitInfoListPage(Page page, VisitorRequest visitorRequest); VisitInfo visitInfoDetail(String id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java index 6fa536c..7a25099 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.dao.CaseInfoMapper; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; import com.casic.missiles.modular.dto.CaseInfoRequest; import com.casic.missiles.modular.enums.SecurityEventDict; import com.casic.missiles.modular.model.CaseInfo; @@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; import org.springframework.validation.Validator; @@ -35,6 +38,12 @@ @Autowired private CaseInfoMapper caseInfoMapper; + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Autowired + private HazardLevelMapper hazardLevelMapper; + @Resource private Validator validator; @@ -68,6 +77,8 @@ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); List list = new ArrayList<>(); if (!CollectionUtil.isEmpty(results)) { + List categoryList = categoryLevelMapper.selectCategoryNameList(); + List hazardList = hazardLevelMapper.selectHazardName(); final Integer[] index = {0}; results.forEach(busConcentrator -> { validator.validate(busConcentrator, beanPropertyBindingResult); @@ -81,14 +92,21 @@ ); return; } -// if (new Long(0L).equals(busConcentrator.getDeptid())) { -// busConcentrator.setDeptid(commonPermissionService.getAuthService().getLoginUser().getDeptId()); -// } else { -// if (StrUtil.isEmpty(commonPermissionService.getDeptService().getDeptName(busConcentrator.getDeptid()))) { -// list.add(" 第" + index[0] + "行,权属单位不存在"); -// return; -// } -// } + //事件级别、事件类别校验及编码生成 + if(!categoryList.contains(busConcentrator.getTypeName())){ + list.add(" 第" + index[0] + "行,".concat("事件类别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getTypeName().getBytes()); + busConcentrator.setCategoryLevelCode(s.substring(0,15)); + } + if(!hazardList.contains(busConcentrator.getLevelName())){ + list.add(" 第" + index[0] + "行,".concat("事件级别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getLevelName().getBytes()); + busConcentrator.setHazardLevelCode(s.substring(0,15)); + } if (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { try { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java index be006ea..0755c85 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -49,6 +50,8 @@ @Override public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + String s = DigestUtils.md5DigestAsHex(caseCategoryLevel.getName().getBytes()); + caseCategoryLevel.setCode(s.substring(0,15)); CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); if(!Objects.isNull(categoryLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java index 9d9c731..2f2b9e3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -65,12 +66,12 @@ private GroupDeviceService groupDeviceService; @Override - public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + public List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest) { try { List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); pageList.forEach(device ->{ - device.setDevType(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); - device.setStatus(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); + device.setDevTypeName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); + device.setStatusName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); device.setPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, device.getPosition())); device.setAreaName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_AREA, device.getArea())); device.setIsKeyAreaName(dictService.getDictNameByCode(SecurityEventDict.IS_KEY_AREA, device.getIsKeyArea())); @@ -83,6 +84,12 @@ } @Override + public List deviceInfoList(DeviceInfoRequest deviceInfoRequest) { + List list = deviceInfoMapper.getDeviceInfoList(deviceInfoRequest); + return list; + } + + @Override public Object addDeviceInfo(DeviceInfo deviceInfo) { DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); if(!Objects.isNull(device)){ @@ -186,6 +193,7 @@ DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); deviceRepairLogDTO.setDeviceCode(k); deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setIp(v.get(0).getIp()); deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); deviceRepairLogDTO.setFailNumber(v.size()); deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); @@ -211,7 +219,7 @@ } @Override - public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { try { List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); pageList.forEach(gateGroup ->{ @@ -293,9 +301,11 @@ } @Override - public List selectDeviceCodesByIds(List ids) { + public List selectDeviceCodesById(Long id) { //关联表查询 - List groupDevices = groupDeviceMapper.selectBatchIds(ids); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("gate_group_id", id); + List groupDevices = groupDeviceMapper.selectList(wrapper); List collect = groupDevices.stream().distinct().collect(Collectors.toList()); List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); return deviceCodes; @@ -307,5 +317,18 @@ return indexCodes; } + @Override + public List selectRepairLogByCode(String devCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("device_code", devCode); + List deviceRepairLogs = deviceRepairLogMapper.selectList(queryWrapper); + return deviceRepairLogs; + } + + @Override + public int updateBatchGateGroupStatus(List deviceCodes, String status) { + return deviceInfoMapper.updateStatusBatchByCodes(deviceCodes, status); + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java index 40e9dae..529eb74 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -39,6 +40,8 @@ @Override public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + String s = DigestUtils.md5DigestAsHex(caseHazardLevel.getName().getBytes()); + caseHazardLevel.setCode(s.substring(0,15)); CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); if(!Objects.isNull(hazardLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java index 1f3f89b..497003a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -58,7 +58,7 @@ List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); pageList.forEach(visitorApply ->{ visitorApply.setVisitReason(dictService.getDictNameByCode(SecurityEventDict.VISIT_REASON, visitorApply.getVisitReason())); - visitorApply.setVisitPosition(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); + visitorApply.setVisitPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); }); return pageList; } catch (DataAccessException ex) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java index 6b35150..7b8105e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -41,15 +41,19 @@ private String visitReason; @ExcelProperty("访问楼栋") private String visitPosition; + @TableField(exist = false) + private String visitPositionName; @ExcelProperty("备注") private String remarks; @ExcelProperty("状态") private String status; - @ExcelProperty("被访人工号") + @TableField(exist = false) + private String statusName; + @ExcelProperty("申请者工号") private String staffCode; - @ExcelProperty("被访人姓名") + @ExcelProperty("申请者姓名") private String staffName; - @ExcelProperty("被访人联系方式") + @ExcelProperty("申请者联系方式") private String staffPhone; @ExcelProperty("访问开始时间") private String inTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java index 0647185..22f2075 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -5,7 +5,6 @@ import com.casic.missiles.modular.dto.*; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import java.util.List; @@ -16,7 +15,9 @@ */ public interface DeviceInfoService extends IService { - List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest); + + List deviceInfoList(DeviceInfoRequest deviceInfoRequest); Object addDeviceInfo(DeviceInfo deviceInfo); @@ -36,7 +37,7 @@ DeviceRepairLog selectById(Long id); - List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); Object addGateGroupDTO(GateGroupDTO gateGroupDTO); @@ -44,7 +45,11 @@ Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); - List selectDeviceCodesByIds(List ids); + List selectDeviceCodesById(Long ids); List selectIndexCodesByCodes(List deviceCodes); + + List selectRepairLogByCode(String devCode); + + int updateBatchGateGroupStatus(List deviceCodes, String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java index b7ebe90..2ba97b0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.dto.VisitorRequest; import com.casic.missiles.modular.model.VisitInfo; @@ -11,7 +12,7 @@ * @Author: wangpeng * @Date: 2022/7/28 19:40 */ -public interface VisitService { +public interface VisitService extends IService { List visitInfoListPage(Page page, VisitorRequest visitorRequest); VisitInfo visitInfoDetail(String id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java index 6fa536c..7a25099 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.dao.CaseInfoMapper; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; import com.casic.missiles.modular.dto.CaseInfoRequest; import com.casic.missiles.modular.enums.SecurityEventDict; import com.casic.missiles.modular.model.CaseInfo; @@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; import org.springframework.validation.Validator; @@ -35,6 +38,12 @@ @Autowired private CaseInfoMapper caseInfoMapper; + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Autowired + private HazardLevelMapper hazardLevelMapper; + @Resource private Validator validator; @@ -68,6 +77,8 @@ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); List list = new ArrayList<>(); if (!CollectionUtil.isEmpty(results)) { + List categoryList = categoryLevelMapper.selectCategoryNameList(); + List hazardList = hazardLevelMapper.selectHazardName(); final Integer[] index = {0}; results.forEach(busConcentrator -> { validator.validate(busConcentrator, beanPropertyBindingResult); @@ -81,14 +92,21 @@ ); return; } -// if (new Long(0L).equals(busConcentrator.getDeptid())) { -// busConcentrator.setDeptid(commonPermissionService.getAuthService().getLoginUser().getDeptId()); -// } else { -// if (StrUtil.isEmpty(commonPermissionService.getDeptService().getDeptName(busConcentrator.getDeptid()))) { -// list.add(" 第" + index[0] + "行,权属单位不存在"); -// return; -// } -// } + //事件级别、事件类别校验及编码生成 + if(!categoryList.contains(busConcentrator.getTypeName())){ + list.add(" 第" + index[0] + "行,".concat("事件类别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getTypeName().getBytes()); + busConcentrator.setCategoryLevelCode(s.substring(0,15)); + } + if(!hazardList.contains(busConcentrator.getLevelName())){ + list.add(" 第" + index[0] + "行,".concat("事件级别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getLevelName().getBytes()); + busConcentrator.setHazardLevelCode(s.substring(0,15)); + } if (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { try { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java index be006ea..0755c85 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -49,6 +50,8 @@ @Override public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + String s = DigestUtils.md5DigestAsHex(caseCategoryLevel.getName().getBytes()); + caseCategoryLevel.setCode(s.substring(0,15)); CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); if(!Objects.isNull(categoryLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java index 9d9c731..2f2b9e3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -65,12 +66,12 @@ private GroupDeviceService groupDeviceService; @Override - public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + public List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest) { try { List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); pageList.forEach(device ->{ - device.setDevType(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); - device.setStatus(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); + device.setDevTypeName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); + device.setStatusName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); device.setPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, device.getPosition())); device.setAreaName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_AREA, device.getArea())); device.setIsKeyAreaName(dictService.getDictNameByCode(SecurityEventDict.IS_KEY_AREA, device.getIsKeyArea())); @@ -83,6 +84,12 @@ } @Override + public List deviceInfoList(DeviceInfoRequest deviceInfoRequest) { + List list = deviceInfoMapper.getDeviceInfoList(deviceInfoRequest); + return list; + } + + @Override public Object addDeviceInfo(DeviceInfo deviceInfo) { DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); if(!Objects.isNull(device)){ @@ -186,6 +193,7 @@ DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); deviceRepairLogDTO.setDeviceCode(k); deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setIp(v.get(0).getIp()); deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); deviceRepairLogDTO.setFailNumber(v.size()); deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); @@ -211,7 +219,7 @@ } @Override - public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { try { List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); pageList.forEach(gateGroup ->{ @@ -293,9 +301,11 @@ } @Override - public List selectDeviceCodesByIds(List ids) { + public List selectDeviceCodesById(Long id) { //关联表查询 - List groupDevices = groupDeviceMapper.selectBatchIds(ids); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("gate_group_id", id); + List groupDevices = groupDeviceMapper.selectList(wrapper); List collect = groupDevices.stream().distinct().collect(Collectors.toList()); List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); return deviceCodes; @@ -307,5 +317,18 @@ return indexCodes; } + @Override + public List selectRepairLogByCode(String devCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("device_code", devCode); + List deviceRepairLogs = deviceRepairLogMapper.selectList(queryWrapper); + return deviceRepairLogs; + } + + @Override + public int updateBatchGateGroupStatus(List deviceCodes, String status) { + return deviceInfoMapper.updateStatusBatchByCodes(deviceCodes, status); + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java index 40e9dae..529eb74 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -39,6 +40,8 @@ @Override public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + String s = DigestUtils.md5DigestAsHex(caseHazardLevel.getName().getBytes()); + caseHazardLevel.setCode(s.substring(0,15)); CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); if(!Objects.isNull(hazardLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java index 1f3f89b..497003a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -58,7 +58,7 @@ List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); pageList.forEach(visitorApply ->{ visitorApply.setVisitReason(dictService.getDictNameByCode(SecurityEventDict.VISIT_REASON, visitorApply.getVisitReason())); - visitorApply.setVisitPosition(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); + visitorApply.setVisitPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); }); return pageList; } catch (DataAccessException ex) { diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index d95fb6f..99adbea 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -28,6 +28,12 @@ #图片下载本地地址 file: uploadPath: D:\tmp\ + commponentType: disk + +cockpit: + config: + #模板文件本地路径 + exportPath: D:\code\casic-security-cockpit\casic-web\src\main\resources\config\export\ logging: level.root: info diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java index 6b35150..7b8105e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -41,15 +41,19 @@ private String visitReason; @ExcelProperty("访问楼栋") private String visitPosition; + @TableField(exist = false) + private String visitPositionName; @ExcelProperty("备注") private String remarks; @ExcelProperty("状态") private String status; - @ExcelProperty("被访人工号") + @TableField(exist = false) + private String statusName; + @ExcelProperty("申请者工号") private String staffCode; - @ExcelProperty("被访人姓名") + @ExcelProperty("申请者姓名") private String staffName; - @ExcelProperty("被访人联系方式") + @ExcelProperty("申请者联系方式") private String staffPhone; @ExcelProperty("访问开始时间") private String inTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java index 0647185..22f2075 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -5,7 +5,6 @@ import com.casic.missiles.modular.dto.*; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import java.util.List; @@ -16,7 +15,9 @@ */ public interface DeviceInfoService extends IService { - List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest); + + List deviceInfoList(DeviceInfoRequest deviceInfoRequest); Object addDeviceInfo(DeviceInfo deviceInfo); @@ -36,7 +37,7 @@ DeviceRepairLog selectById(Long id); - List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); Object addGateGroupDTO(GateGroupDTO gateGroupDTO); @@ -44,7 +45,11 @@ Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); - List selectDeviceCodesByIds(List ids); + List selectDeviceCodesById(Long ids); List selectIndexCodesByCodes(List deviceCodes); + + List selectRepairLogByCode(String devCode); + + int updateBatchGateGroupStatus(List deviceCodes, String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java index b7ebe90..2ba97b0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.dto.VisitorRequest; import com.casic.missiles.modular.model.VisitInfo; @@ -11,7 +12,7 @@ * @Author: wangpeng * @Date: 2022/7/28 19:40 */ -public interface VisitService { +public interface VisitService extends IService { List visitInfoListPage(Page page, VisitorRequest visitorRequest); VisitInfo visitInfoDetail(String id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java index 6fa536c..7a25099 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.dao.CaseInfoMapper; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; import com.casic.missiles.modular.dto.CaseInfoRequest; import com.casic.missiles.modular.enums.SecurityEventDict; import com.casic.missiles.modular.model.CaseInfo; @@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; import org.springframework.validation.Validator; @@ -35,6 +38,12 @@ @Autowired private CaseInfoMapper caseInfoMapper; + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Autowired + private HazardLevelMapper hazardLevelMapper; + @Resource private Validator validator; @@ -68,6 +77,8 @@ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); List list = new ArrayList<>(); if (!CollectionUtil.isEmpty(results)) { + List categoryList = categoryLevelMapper.selectCategoryNameList(); + List hazardList = hazardLevelMapper.selectHazardName(); final Integer[] index = {0}; results.forEach(busConcentrator -> { validator.validate(busConcentrator, beanPropertyBindingResult); @@ -81,14 +92,21 @@ ); return; } -// if (new Long(0L).equals(busConcentrator.getDeptid())) { -// busConcentrator.setDeptid(commonPermissionService.getAuthService().getLoginUser().getDeptId()); -// } else { -// if (StrUtil.isEmpty(commonPermissionService.getDeptService().getDeptName(busConcentrator.getDeptid()))) { -// list.add(" 第" + index[0] + "行,权属单位不存在"); -// return; -// } -// } + //事件级别、事件类别校验及编码生成 + if(!categoryList.contains(busConcentrator.getTypeName())){ + list.add(" 第" + index[0] + "行,".concat("事件类别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getTypeName().getBytes()); + busConcentrator.setCategoryLevelCode(s.substring(0,15)); + } + if(!hazardList.contains(busConcentrator.getLevelName())){ + list.add(" 第" + index[0] + "行,".concat("事件级别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getLevelName().getBytes()); + busConcentrator.setHazardLevelCode(s.substring(0,15)); + } if (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { try { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java index be006ea..0755c85 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -49,6 +50,8 @@ @Override public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + String s = DigestUtils.md5DigestAsHex(caseCategoryLevel.getName().getBytes()); + caseCategoryLevel.setCode(s.substring(0,15)); CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); if(!Objects.isNull(categoryLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java index 9d9c731..2f2b9e3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -65,12 +66,12 @@ private GroupDeviceService groupDeviceService; @Override - public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + public List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest) { try { List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); pageList.forEach(device ->{ - device.setDevType(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); - device.setStatus(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); + device.setDevTypeName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); + device.setStatusName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); device.setPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, device.getPosition())); device.setAreaName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_AREA, device.getArea())); device.setIsKeyAreaName(dictService.getDictNameByCode(SecurityEventDict.IS_KEY_AREA, device.getIsKeyArea())); @@ -83,6 +84,12 @@ } @Override + public List deviceInfoList(DeviceInfoRequest deviceInfoRequest) { + List list = deviceInfoMapper.getDeviceInfoList(deviceInfoRequest); + return list; + } + + @Override public Object addDeviceInfo(DeviceInfo deviceInfo) { DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); if(!Objects.isNull(device)){ @@ -186,6 +193,7 @@ DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); deviceRepairLogDTO.setDeviceCode(k); deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setIp(v.get(0).getIp()); deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); deviceRepairLogDTO.setFailNumber(v.size()); deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); @@ -211,7 +219,7 @@ } @Override - public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { try { List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); pageList.forEach(gateGroup ->{ @@ -293,9 +301,11 @@ } @Override - public List selectDeviceCodesByIds(List ids) { + public List selectDeviceCodesById(Long id) { //关联表查询 - List groupDevices = groupDeviceMapper.selectBatchIds(ids); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("gate_group_id", id); + List groupDevices = groupDeviceMapper.selectList(wrapper); List collect = groupDevices.stream().distinct().collect(Collectors.toList()); List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); return deviceCodes; @@ -307,5 +317,18 @@ return indexCodes; } + @Override + public List selectRepairLogByCode(String devCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("device_code", devCode); + List deviceRepairLogs = deviceRepairLogMapper.selectList(queryWrapper); + return deviceRepairLogs; + } + + @Override + public int updateBatchGateGroupStatus(List deviceCodes, String status) { + return deviceInfoMapper.updateStatusBatchByCodes(deviceCodes, status); + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java index 40e9dae..529eb74 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -39,6 +40,8 @@ @Override public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + String s = DigestUtils.md5DigestAsHex(caseHazardLevel.getName().getBytes()); + caseHazardLevel.setCode(s.substring(0,15)); CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); if(!Objects.isNull(hazardLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java index 1f3f89b..497003a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -58,7 +58,7 @@ List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); pageList.forEach(visitorApply ->{ visitorApply.setVisitReason(dictService.getDictNameByCode(SecurityEventDict.VISIT_REASON, visitorApply.getVisitReason())); - visitorApply.setVisitPosition(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); + visitorApply.setVisitPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); }); return pageList; } catch (DataAccessException ex) { diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index d95fb6f..99adbea 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -28,6 +28,12 @@ #图片下载本地地址 file: uploadPath: D:\tmp\ + commponentType: disk + +cockpit: + config: + #模板文件本地路径 + exportPath: D:\code\casic-security-cockpit\casic-web\src\main\resources\config\export\ logging: level.root: info diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 86971f8..9dc8566 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -13,6 +13,8 @@ ################### mybatis-plus配置 ################### mybatis-plus: global-config: + #字段策略 0:"所有字段都更新和插入" 1:"只更新和插入非NULL值" 2:"只更新和插入非NULL值且非空字符串" + field-strategy: 1 enable-sql-runner: true configuration: # 配置结果集属性为空时 是否映射返回结果 @@ -28,7 +30,7 @@ session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken file: - uploadPath: D:\tmp\ #图片下载本地地址 + uploadPath: D:\tmp\ # config: # export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ # config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java index 6b35150..7b8105e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -41,15 +41,19 @@ private String visitReason; @ExcelProperty("访问楼栋") private String visitPosition; + @TableField(exist = false) + private String visitPositionName; @ExcelProperty("备注") private String remarks; @ExcelProperty("状态") private String status; - @ExcelProperty("被访人工号") + @TableField(exist = false) + private String statusName; + @ExcelProperty("申请者工号") private String staffCode; - @ExcelProperty("被访人姓名") + @ExcelProperty("申请者姓名") private String staffName; - @ExcelProperty("被访人联系方式") + @ExcelProperty("申请者联系方式") private String staffPhone; @ExcelProperty("访问开始时间") private String inTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java index 0647185..22f2075 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -5,7 +5,6 @@ import com.casic.missiles.modular.dto.*; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import java.util.List; @@ -16,7 +15,9 @@ */ public interface DeviceInfoService extends IService { - List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest); + + List deviceInfoList(DeviceInfoRequest deviceInfoRequest); Object addDeviceInfo(DeviceInfo deviceInfo); @@ -36,7 +37,7 @@ DeviceRepairLog selectById(Long id); - List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); Object addGateGroupDTO(GateGroupDTO gateGroupDTO); @@ -44,7 +45,11 @@ Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); - List selectDeviceCodesByIds(List ids); + List selectDeviceCodesById(Long ids); List selectIndexCodesByCodes(List deviceCodes); + + List selectRepairLogByCode(String devCode); + + int updateBatchGateGroupStatus(List deviceCodes, String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java index b7ebe90..2ba97b0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.dto.VisitorRequest; import com.casic.missiles.modular.model.VisitInfo; @@ -11,7 +12,7 @@ * @Author: wangpeng * @Date: 2022/7/28 19:40 */ -public interface VisitService { +public interface VisitService extends IService { List visitInfoListPage(Page page, VisitorRequest visitorRequest); VisitInfo visitInfoDetail(String id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java index 6fa536c..7a25099 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.dao.CaseInfoMapper; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; import com.casic.missiles.modular.dto.CaseInfoRequest; import com.casic.missiles.modular.enums.SecurityEventDict; import com.casic.missiles.modular.model.CaseInfo; @@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; import org.springframework.validation.Validator; @@ -35,6 +38,12 @@ @Autowired private CaseInfoMapper caseInfoMapper; + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Autowired + private HazardLevelMapper hazardLevelMapper; + @Resource private Validator validator; @@ -68,6 +77,8 @@ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); List list = new ArrayList<>(); if (!CollectionUtil.isEmpty(results)) { + List categoryList = categoryLevelMapper.selectCategoryNameList(); + List hazardList = hazardLevelMapper.selectHazardName(); final Integer[] index = {0}; results.forEach(busConcentrator -> { validator.validate(busConcentrator, beanPropertyBindingResult); @@ -81,14 +92,21 @@ ); return; } -// if (new Long(0L).equals(busConcentrator.getDeptid())) { -// busConcentrator.setDeptid(commonPermissionService.getAuthService().getLoginUser().getDeptId()); -// } else { -// if (StrUtil.isEmpty(commonPermissionService.getDeptService().getDeptName(busConcentrator.getDeptid()))) { -// list.add(" 第" + index[0] + "行,权属单位不存在"); -// return; -// } -// } + //事件级别、事件类别校验及编码生成 + if(!categoryList.contains(busConcentrator.getTypeName())){ + list.add(" 第" + index[0] + "行,".concat("事件类别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getTypeName().getBytes()); + busConcentrator.setCategoryLevelCode(s.substring(0,15)); + } + if(!hazardList.contains(busConcentrator.getLevelName())){ + list.add(" 第" + index[0] + "行,".concat("事件级别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getLevelName().getBytes()); + busConcentrator.setHazardLevelCode(s.substring(0,15)); + } if (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { try { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java index be006ea..0755c85 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -49,6 +50,8 @@ @Override public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + String s = DigestUtils.md5DigestAsHex(caseCategoryLevel.getName().getBytes()); + caseCategoryLevel.setCode(s.substring(0,15)); CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); if(!Objects.isNull(categoryLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java index 9d9c731..2f2b9e3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -65,12 +66,12 @@ private GroupDeviceService groupDeviceService; @Override - public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + public List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest) { try { List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); pageList.forEach(device ->{ - device.setDevType(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); - device.setStatus(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); + device.setDevTypeName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); + device.setStatusName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); device.setPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, device.getPosition())); device.setAreaName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_AREA, device.getArea())); device.setIsKeyAreaName(dictService.getDictNameByCode(SecurityEventDict.IS_KEY_AREA, device.getIsKeyArea())); @@ -83,6 +84,12 @@ } @Override + public List deviceInfoList(DeviceInfoRequest deviceInfoRequest) { + List list = deviceInfoMapper.getDeviceInfoList(deviceInfoRequest); + return list; + } + + @Override public Object addDeviceInfo(DeviceInfo deviceInfo) { DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); if(!Objects.isNull(device)){ @@ -186,6 +193,7 @@ DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); deviceRepairLogDTO.setDeviceCode(k); deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setIp(v.get(0).getIp()); deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); deviceRepairLogDTO.setFailNumber(v.size()); deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); @@ -211,7 +219,7 @@ } @Override - public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { try { List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); pageList.forEach(gateGroup ->{ @@ -293,9 +301,11 @@ } @Override - public List selectDeviceCodesByIds(List ids) { + public List selectDeviceCodesById(Long id) { //关联表查询 - List groupDevices = groupDeviceMapper.selectBatchIds(ids); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("gate_group_id", id); + List groupDevices = groupDeviceMapper.selectList(wrapper); List collect = groupDevices.stream().distinct().collect(Collectors.toList()); List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); return deviceCodes; @@ -307,5 +317,18 @@ return indexCodes; } + @Override + public List selectRepairLogByCode(String devCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("device_code", devCode); + List deviceRepairLogs = deviceRepairLogMapper.selectList(queryWrapper); + return deviceRepairLogs; + } + + @Override + public int updateBatchGateGroupStatus(List deviceCodes, String status) { + return deviceInfoMapper.updateStatusBatchByCodes(deviceCodes, status); + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java index 40e9dae..529eb74 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -39,6 +40,8 @@ @Override public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + String s = DigestUtils.md5DigestAsHex(caseHazardLevel.getName().getBytes()); + caseHazardLevel.setCode(s.substring(0,15)); CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); if(!Objects.isNull(hazardLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java index 1f3f89b..497003a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -58,7 +58,7 @@ List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); pageList.forEach(visitorApply ->{ visitorApply.setVisitReason(dictService.getDictNameByCode(SecurityEventDict.VISIT_REASON, visitorApply.getVisitReason())); - visitorApply.setVisitPosition(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); + visitorApply.setVisitPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); }); return pageList; } catch (DataAccessException ex) { diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index d95fb6f..99adbea 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -28,6 +28,12 @@ #图片下载本地地址 file: uploadPath: D:\tmp\ + commponentType: disk + +cockpit: + config: + #模板文件本地路径 + exportPath: D:\code\casic-security-cockpit\casic-web\src\main\resources\config\export\ logging: level.root: info diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 86971f8..9dc8566 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -13,6 +13,8 @@ ################### mybatis-plus配置 ################### mybatis-plus: global-config: + #字段策略 0:"所有字段都更新和插入" 1:"只更新和插入非NULL值" 2:"只更新和插入非NULL值且非空字符串" + field-strategy: 1 enable-sql-runner: true configuration: # 配置结果集属性为空时 是否映射返回结果 @@ -28,7 +30,7 @@ session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken file: - uploadPath: D:\tmp\ #图片下载本地地址 + uploadPath: D:\tmp\ # config: # export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ # config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx b/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx new file mode 100644 index 0000000..3f0dbbe --- /dev/null +++ b/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java index 6b35150..7b8105e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -41,15 +41,19 @@ private String visitReason; @ExcelProperty("访问楼栋") private String visitPosition; + @TableField(exist = false) + private String visitPositionName; @ExcelProperty("备注") private String remarks; @ExcelProperty("状态") private String status; - @ExcelProperty("被访人工号") + @TableField(exist = false) + private String statusName; + @ExcelProperty("申请者工号") private String staffCode; - @ExcelProperty("被访人姓名") + @ExcelProperty("申请者姓名") private String staffName; - @ExcelProperty("被访人联系方式") + @ExcelProperty("申请者联系方式") private String staffPhone; @ExcelProperty("访问开始时间") private String inTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java index 0647185..22f2075 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -5,7 +5,6 @@ import com.casic.missiles.modular.dto.*; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import java.util.List; @@ -16,7 +15,9 @@ */ public interface DeviceInfoService extends IService { - List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest); + + List deviceInfoList(DeviceInfoRequest deviceInfoRequest); Object addDeviceInfo(DeviceInfo deviceInfo); @@ -36,7 +37,7 @@ DeviceRepairLog selectById(Long id); - List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); Object addGateGroupDTO(GateGroupDTO gateGroupDTO); @@ -44,7 +45,11 @@ Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); - List selectDeviceCodesByIds(List ids); + List selectDeviceCodesById(Long ids); List selectIndexCodesByCodes(List deviceCodes); + + List selectRepairLogByCode(String devCode); + + int updateBatchGateGroupStatus(List deviceCodes, String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java index b7ebe90..2ba97b0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.dto.VisitorRequest; import com.casic.missiles.modular.model.VisitInfo; @@ -11,7 +12,7 @@ * @Author: wangpeng * @Date: 2022/7/28 19:40 */ -public interface VisitService { +public interface VisitService extends IService { List visitInfoListPage(Page page, VisitorRequest visitorRequest); VisitInfo visitInfoDetail(String id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java index 6fa536c..7a25099 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.dao.CaseInfoMapper; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; import com.casic.missiles.modular.dto.CaseInfoRequest; import com.casic.missiles.modular.enums.SecurityEventDict; import com.casic.missiles.modular.model.CaseInfo; @@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; import org.springframework.validation.Validator; @@ -35,6 +38,12 @@ @Autowired private CaseInfoMapper caseInfoMapper; + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Autowired + private HazardLevelMapper hazardLevelMapper; + @Resource private Validator validator; @@ -68,6 +77,8 @@ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); List list = new ArrayList<>(); if (!CollectionUtil.isEmpty(results)) { + List categoryList = categoryLevelMapper.selectCategoryNameList(); + List hazardList = hazardLevelMapper.selectHazardName(); final Integer[] index = {0}; results.forEach(busConcentrator -> { validator.validate(busConcentrator, beanPropertyBindingResult); @@ -81,14 +92,21 @@ ); return; } -// if (new Long(0L).equals(busConcentrator.getDeptid())) { -// busConcentrator.setDeptid(commonPermissionService.getAuthService().getLoginUser().getDeptId()); -// } else { -// if (StrUtil.isEmpty(commonPermissionService.getDeptService().getDeptName(busConcentrator.getDeptid()))) { -// list.add(" 第" + index[0] + "行,权属单位不存在"); -// return; -// } -// } + //事件级别、事件类别校验及编码生成 + if(!categoryList.contains(busConcentrator.getTypeName())){ + list.add(" 第" + index[0] + "行,".concat("事件类别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getTypeName().getBytes()); + busConcentrator.setCategoryLevelCode(s.substring(0,15)); + } + if(!hazardList.contains(busConcentrator.getLevelName())){ + list.add(" 第" + index[0] + "行,".concat("事件级别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getLevelName().getBytes()); + busConcentrator.setHazardLevelCode(s.substring(0,15)); + } if (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { try { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java index be006ea..0755c85 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -49,6 +50,8 @@ @Override public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + String s = DigestUtils.md5DigestAsHex(caseCategoryLevel.getName().getBytes()); + caseCategoryLevel.setCode(s.substring(0,15)); CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); if(!Objects.isNull(categoryLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java index 9d9c731..2f2b9e3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -65,12 +66,12 @@ private GroupDeviceService groupDeviceService; @Override - public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + public List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest) { try { List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); pageList.forEach(device ->{ - device.setDevType(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); - device.setStatus(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); + device.setDevTypeName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); + device.setStatusName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); device.setPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, device.getPosition())); device.setAreaName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_AREA, device.getArea())); device.setIsKeyAreaName(dictService.getDictNameByCode(SecurityEventDict.IS_KEY_AREA, device.getIsKeyArea())); @@ -83,6 +84,12 @@ } @Override + public List deviceInfoList(DeviceInfoRequest deviceInfoRequest) { + List list = deviceInfoMapper.getDeviceInfoList(deviceInfoRequest); + return list; + } + + @Override public Object addDeviceInfo(DeviceInfo deviceInfo) { DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); if(!Objects.isNull(device)){ @@ -186,6 +193,7 @@ DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); deviceRepairLogDTO.setDeviceCode(k); deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setIp(v.get(0).getIp()); deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); deviceRepairLogDTO.setFailNumber(v.size()); deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); @@ -211,7 +219,7 @@ } @Override - public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { try { List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); pageList.forEach(gateGroup ->{ @@ -293,9 +301,11 @@ } @Override - public List selectDeviceCodesByIds(List ids) { + public List selectDeviceCodesById(Long id) { //关联表查询 - List groupDevices = groupDeviceMapper.selectBatchIds(ids); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("gate_group_id", id); + List groupDevices = groupDeviceMapper.selectList(wrapper); List collect = groupDevices.stream().distinct().collect(Collectors.toList()); List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); return deviceCodes; @@ -307,5 +317,18 @@ return indexCodes; } + @Override + public List selectRepairLogByCode(String devCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("device_code", devCode); + List deviceRepairLogs = deviceRepairLogMapper.selectList(queryWrapper); + return deviceRepairLogs; + } + + @Override + public int updateBatchGateGroupStatus(List deviceCodes, String status) { + return deviceInfoMapper.updateStatusBatchByCodes(deviceCodes, status); + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java index 40e9dae..529eb74 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -39,6 +40,8 @@ @Override public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + String s = DigestUtils.md5DigestAsHex(caseHazardLevel.getName().getBytes()); + caseHazardLevel.setCode(s.substring(0,15)); CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); if(!Objects.isNull(hazardLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java index 1f3f89b..497003a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -58,7 +58,7 @@ List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); pageList.forEach(visitorApply ->{ visitorApply.setVisitReason(dictService.getDictNameByCode(SecurityEventDict.VISIT_REASON, visitorApply.getVisitReason())); - visitorApply.setVisitPosition(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); + visitorApply.setVisitPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); }); return pageList; } catch (DataAccessException ex) { diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index d95fb6f..99adbea 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -28,6 +28,12 @@ #图片下载本地地址 file: uploadPath: D:\tmp\ + commponentType: disk + +cockpit: + config: + #模板文件本地路径 + exportPath: D:\code\casic-security-cockpit\casic-web\src\main\resources\config\export\ logging: level.root: info diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 86971f8..9dc8566 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -13,6 +13,8 @@ ################### mybatis-plus配置 ################### mybatis-plus: global-config: + #字段策略 0:"所有字段都更新和插入" 1:"只更新和插入非NULL值" 2:"只更新和插入非NULL值且非空字符串" + field-strategy: 1 enable-sql-runner: true configuration: # 配置结果集属性为空时 是否映射返回结果 @@ -28,7 +30,7 @@ session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken file: - uploadPath: D:\tmp\ #图片下载本地地址 + uploadPath: D:\tmp\ # config: # export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ # config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx b/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx new file mode 100644 index 0000000..3f0dbbe --- /dev/null +++ b/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/DeviceTemp.xlsx b/casic-web/src/main/resources/config/export/DeviceTemp.xlsx index 5c8f135..f701bdc 100644 --- a/casic-web/src/main/resources/config/export/DeviceTemp.xlsx +++ b/casic-web/src/main/resources/config/export/DeviceTemp.xlsx Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java index 6b35150..7b8105e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -41,15 +41,19 @@ private String visitReason; @ExcelProperty("访问楼栋") private String visitPosition; + @TableField(exist = false) + private String visitPositionName; @ExcelProperty("备注") private String remarks; @ExcelProperty("状态") private String status; - @ExcelProperty("被访人工号") + @TableField(exist = false) + private String statusName; + @ExcelProperty("申请者工号") private String staffCode; - @ExcelProperty("被访人姓名") + @ExcelProperty("申请者姓名") private String staffName; - @ExcelProperty("被访人联系方式") + @ExcelProperty("申请者联系方式") private String staffPhone; @ExcelProperty("访问开始时间") private String inTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java index 0647185..22f2075 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -5,7 +5,6 @@ import com.casic.missiles.modular.dto.*; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import java.util.List; @@ -16,7 +15,9 @@ */ public interface DeviceInfoService extends IService { - List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest); + + List deviceInfoList(DeviceInfoRequest deviceInfoRequest); Object addDeviceInfo(DeviceInfo deviceInfo); @@ -36,7 +37,7 @@ DeviceRepairLog selectById(Long id); - List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); Object addGateGroupDTO(GateGroupDTO gateGroupDTO); @@ -44,7 +45,11 @@ Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); - List selectDeviceCodesByIds(List ids); + List selectDeviceCodesById(Long ids); List selectIndexCodesByCodes(List deviceCodes); + + List selectRepairLogByCode(String devCode); + + int updateBatchGateGroupStatus(List deviceCodes, String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java index b7ebe90..2ba97b0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.dto.VisitorRequest; import com.casic.missiles.modular.model.VisitInfo; @@ -11,7 +12,7 @@ * @Author: wangpeng * @Date: 2022/7/28 19:40 */ -public interface VisitService { +public interface VisitService extends IService { List visitInfoListPage(Page page, VisitorRequest visitorRequest); VisitInfo visitInfoDetail(String id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java index 6fa536c..7a25099 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.dao.CaseInfoMapper; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; import com.casic.missiles.modular.dto.CaseInfoRequest; import com.casic.missiles.modular.enums.SecurityEventDict; import com.casic.missiles.modular.model.CaseInfo; @@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; import org.springframework.validation.Validator; @@ -35,6 +38,12 @@ @Autowired private CaseInfoMapper caseInfoMapper; + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Autowired + private HazardLevelMapper hazardLevelMapper; + @Resource private Validator validator; @@ -68,6 +77,8 @@ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); List list = new ArrayList<>(); if (!CollectionUtil.isEmpty(results)) { + List categoryList = categoryLevelMapper.selectCategoryNameList(); + List hazardList = hazardLevelMapper.selectHazardName(); final Integer[] index = {0}; results.forEach(busConcentrator -> { validator.validate(busConcentrator, beanPropertyBindingResult); @@ -81,14 +92,21 @@ ); return; } -// if (new Long(0L).equals(busConcentrator.getDeptid())) { -// busConcentrator.setDeptid(commonPermissionService.getAuthService().getLoginUser().getDeptId()); -// } else { -// if (StrUtil.isEmpty(commonPermissionService.getDeptService().getDeptName(busConcentrator.getDeptid()))) { -// list.add(" 第" + index[0] + "行,权属单位不存在"); -// return; -// } -// } + //事件级别、事件类别校验及编码生成 + if(!categoryList.contains(busConcentrator.getTypeName())){ + list.add(" 第" + index[0] + "行,".concat("事件类别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getTypeName().getBytes()); + busConcentrator.setCategoryLevelCode(s.substring(0,15)); + } + if(!hazardList.contains(busConcentrator.getLevelName())){ + list.add(" 第" + index[0] + "行,".concat("事件级别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getLevelName().getBytes()); + busConcentrator.setHazardLevelCode(s.substring(0,15)); + } if (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { try { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java index be006ea..0755c85 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -49,6 +50,8 @@ @Override public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + String s = DigestUtils.md5DigestAsHex(caseCategoryLevel.getName().getBytes()); + caseCategoryLevel.setCode(s.substring(0,15)); CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); if(!Objects.isNull(categoryLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java index 9d9c731..2f2b9e3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -65,12 +66,12 @@ private GroupDeviceService groupDeviceService; @Override - public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + public List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest) { try { List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); pageList.forEach(device ->{ - device.setDevType(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); - device.setStatus(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); + device.setDevTypeName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); + device.setStatusName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); device.setPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, device.getPosition())); device.setAreaName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_AREA, device.getArea())); device.setIsKeyAreaName(dictService.getDictNameByCode(SecurityEventDict.IS_KEY_AREA, device.getIsKeyArea())); @@ -83,6 +84,12 @@ } @Override + public List deviceInfoList(DeviceInfoRequest deviceInfoRequest) { + List list = deviceInfoMapper.getDeviceInfoList(deviceInfoRequest); + return list; + } + + @Override public Object addDeviceInfo(DeviceInfo deviceInfo) { DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); if(!Objects.isNull(device)){ @@ -186,6 +193,7 @@ DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); deviceRepairLogDTO.setDeviceCode(k); deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setIp(v.get(0).getIp()); deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); deviceRepairLogDTO.setFailNumber(v.size()); deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); @@ -211,7 +219,7 @@ } @Override - public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { try { List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); pageList.forEach(gateGroup ->{ @@ -293,9 +301,11 @@ } @Override - public List selectDeviceCodesByIds(List ids) { + public List selectDeviceCodesById(Long id) { //关联表查询 - List groupDevices = groupDeviceMapper.selectBatchIds(ids); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("gate_group_id", id); + List groupDevices = groupDeviceMapper.selectList(wrapper); List collect = groupDevices.stream().distinct().collect(Collectors.toList()); List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); return deviceCodes; @@ -307,5 +317,18 @@ return indexCodes; } + @Override + public List selectRepairLogByCode(String devCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("device_code", devCode); + List deviceRepairLogs = deviceRepairLogMapper.selectList(queryWrapper); + return deviceRepairLogs; + } + + @Override + public int updateBatchGateGroupStatus(List deviceCodes, String status) { + return deviceInfoMapper.updateStatusBatchByCodes(deviceCodes, status); + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java index 40e9dae..529eb74 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -39,6 +40,8 @@ @Override public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + String s = DigestUtils.md5DigestAsHex(caseHazardLevel.getName().getBytes()); + caseHazardLevel.setCode(s.substring(0,15)); CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); if(!Objects.isNull(hazardLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java index 1f3f89b..497003a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -58,7 +58,7 @@ List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); pageList.forEach(visitorApply ->{ visitorApply.setVisitReason(dictService.getDictNameByCode(SecurityEventDict.VISIT_REASON, visitorApply.getVisitReason())); - visitorApply.setVisitPosition(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); + visitorApply.setVisitPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); }); return pageList; } catch (DataAccessException ex) { diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index d95fb6f..99adbea 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -28,6 +28,12 @@ #图片下载本地地址 file: uploadPath: D:\tmp\ + commponentType: disk + +cockpit: + config: + #模板文件本地路径 + exportPath: D:\code\casic-security-cockpit\casic-web\src\main\resources\config\export\ logging: level.root: info diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 86971f8..9dc8566 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -13,6 +13,8 @@ ################### mybatis-plus配置 ################### mybatis-plus: global-config: + #字段策略 0:"所有字段都更新和插入" 1:"只更新和插入非NULL值" 2:"只更新和插入非NULL值且非空字符串" + field-strategy: 1 enable-sql-runner: true configuration: # 配置结果集属性为空时 是否映射返回结果 @@ -28,7 +30,7 @@ session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken file: - uploadPath: D:\tmp\ #图片下载本地地址 + uploadPath: D:\tmp\ # config: # export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ # config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx b/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx new file mode 100644 index 0000000..3f0dbbe --- /dev/null +++ b/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/DeviceTemp.xlsx b/casic-web/src/main/resources/config/export/DeviceTemp.xlsx index 5c8f135..f701bdc 100644 --- a/casic-web/src/main/resources/config/export/DeviceTemp.xlsx +++ b/casic-web/src/main/resources/config/export/DeviceTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/FireEquipTemp.xlsx b/casic-web/src/main/resources/config/export/FireEquipTemp.xlsx new file mode 100644 index 0000000..8a89b14 --- /dev/null +++ b/casic-web/src/main/resources/config/export/FireEquipTemp.xlsx Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java index 6b35150..7b8105e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -41,15 +41,19 @@ private String visitReason; @ExcelProperty("访问楼栋") private String visitPosition; + @TableField(exist = false) + private String visitPositionName; @ExcelProperty("备注") private String remarks; @ExcelProperty("状态") private String status; - @ExcelProperty("被访人工号") + @TableField(exist = false) + private String statusName; + @ExcelProperty("申请者工号") private String staffCode; - @ExcelProperty("被访人姓名") + @ExcelProperty("申请者姓名") private String staffName; - @ExcelProperty("被访人联系方式") + @ExcelProperty("申请者联系方式") private String staffPhone; @ExcelProperty("访问开始时间") private String inTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java index 0647185..22f2075 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -5,7 +5,6 @@ import com.casic.missiles.modular.dto.*; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import java.util.List; @@ -16,7 +15,9 @@ */ public interface DeviceInfoService extends IService { - List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest); + + List deviceInfoList(DeviceInfoRequest deviceInfoRequest); Object addDeviceInfo(DeviceInfo deviceInfo); @@ -36,7 +37,7 @@ DeviceRepairLog selectById(Long id); - List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); Object addGateGroupDTO(GateGroupDTO gateGroupDTO); @@ -44,7 +45,11 @@ Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); - List selectDeviceCodesByIds(List ids); + List selectDeviceCodesById(Long ids); List selectIndexCodesByCodes(List deviceCodes); + + List selectRepairLogByCode(String devCode); + + int updateBatchGateGroupStatus(List deviceCodes, String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java index b7ebe90..2ba97b0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.dto.VisitorRequest; import com.casic.missiles.modular.model.VisitInfo; @@ -11,7 +12,7 @@ * @Author: wangpeng * @Date: 2022/7/28 19:40 */ -public interface VisitService { +public interface VisitService extends IService { List visitInfoListPage(Page page, VisitorRequest visitorRequest); VisitInfo visitInfoDetail(String id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java index 6fa536c..7a25099 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.dao.CaseInfoMapper; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; import com.casic.missiles.modular.dto.CaseInfoRequest; import com.casic.missiles.modular.enums.SecurityEventDict; import com.casic.missiles.modular.model.CaseInfo; @@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; import org.springframework.validation.Validator; @@ -35,6 +38,12 @@ @Autowired private CaseInfoMapper caseInfoMapper; + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Autowired + private HazardLevelMapper hazardLevelMapper; + @Resource private Validator validator; @@ -68,6 +77,8 @@ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); List list = new ArrayList<>(); if (!CollectionUtil.isEmpty(results)) { + List categoryList = categoryLevelMapper.selectCategoryNameList(); + List hazardList = hazardLevelMapper.selectHazardName(); final Integer[] index = {0}; results.forEach(busConcentrator -> { validator.validate(busConcentrator, beanPropertyBindingResult); @@ -81,14 +92,21 @@ ); return; } -// if (new Long(0L).equals(busConcentrator.getDeptid())) { -// busConcentrator.setDeptid(commonPermissionService.getAuthService().getLoginUser().getDeptId()); -// } else { -// if (StrUtil.isEmpty(commonPermissionService.getDeptService().getDeptName(busConcentrator.getDeptid()))) { -// list.add(" 第" + index[0] + "行,权属单位不存在"); -// return; -// } -// } + //事件级别、事件类别校验及编码生成 + if(!categoryList.contains(busConcentrator.getTypeName())){ + list.add(" 第" + index[0] + "行,".concat("事件类别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getTypeName().getBytes()); + busConcentrator.setCategoryLevelCode(s.substring(0,15)); + } + if(!hazardList.contains(busConcentrator.getLevelName())){ + list.add(" 第" + index[0] + "行,".concat("事件级别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getLevelName().getBytes()); + busConcentrator.setHazardLevelCode(s.substring(0,15)); + } if (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { try { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java index be006ea..0755c85 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -49,6 +50,8 @@ @Override public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + String s = DigestUtils.md5DigestAsHex(caseCategoryLevel.getName().getBytes()); + caseCategoryLevel.setCode(s.substring(0,15)); CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); if(!Objects.isNull(categoryLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java index 9d9c731..2f2b9e3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -65,12 +66,12 @@ private GroupDeviceService groupDeviceService; @Override - public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + public List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest) { try { List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); pageList.forEach(device ->{ - device.setDevType(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); - device.setStatus(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); + device.setDevTypeName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); + device.setStatusName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); device.setPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, device.getPosition())); device.setAreaName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_AREA, device.getArea())); device.setIsKeyAreaName(dictService.getDictNameByCode(SecurityEventDict.IS_KEY_AREA, device.getIsKeyArea())); @@ -83,6 +84,12 @@ } @Override + public List deviceInfoList(DeviceInfoRequest deviceInfoRequest) { + List list = deviceInfoMapper.getDeviceInfoList(deviceInfoRequest); + return list; + } + + @Override public Object addDeviceInfo(DeviceInfo deviceInfo) { DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); if(!Objects.isNull(device)){ @@ -186,6 +193,7 @@ DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); deviceRepairLogDTO.setDeviceCode(k); deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setIp(v.get(0).getIp()); deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); deviceRepairLogDTO.setFailNumber(v.size()); deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); @@ -211,7 +219,7 @@ } @Override - public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { try { List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); pageList.forEach(gateGroup ->{ @@ -293,9 +301,11 @@ } @Override - public List selectDeviceCodesByIds(List ids) { + public List selectDeviceCodesById(Long id) { //关联表查询 - List groupDevices = groupDeviceMapper.selectBatchIds(ids); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("gate_group_id", id); + List groupDevices = groupDeviceMapper.selectList(wrapper); List collect = groupDevices.stream().distinct().collect(Collectors.toList()); List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); return deviceCodes; @@ -307,5 +317,18 @@ return indexCodes; } + @Override + public List selectRepairLogByCode(String devCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("device_code", devCode); + List deviceRepairLogs = deviceRepairLogMapper.selectList(queryWrapper); + return deviceRepairLogs; + } + + @Override + public int updateBatchGateGroupStatus(List deviceCodes, String status) { + return deviceInfoMapper.updateStatusBatchByCodes(deviceCodes, status); + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java index 40e9dae..529eb74 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -39,6 +40,8 @@ @Override public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + String s = DigestUtils.md5DigestAsHex(caseHazardLevel.getName().getBytes()); + caseHazardLevel.setCode(s.substring(0,15)); CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); if(!Objects.isNull(hazardLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java index 1f3f89b..497003a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -58,7 +58,7 @@ List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); pageList.forEach(visitorApply ->{ visitorApply.setVisitReason(dictService.getDictNameByCode(SecurityEventDict.VISIT_REASON, visitorApply.getVisitReason())); - visitorApply.setVisitPosition(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); + visitorApply.setVisitPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); }); return pageList; } catch (DataAccessException ex) { diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index d95fb6f..99adbea 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -28,6 +28,12 @@ #图片下载本地地址 file: uploadPath: D:\tmp\ + commponentType: disk + +cockpit: + config: + #模板文件本地路径 + exportPath: D:\code\casic-security-cockpit\casic-web\src\main\resources\config\export\ logging: level.root: info diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 86971f8..9dc8566 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -13,6 +13,8 @@ ################### mybatis-plus配置 ################### mybatis-plus: global-config: + #字段策略 0:"所有字段都更新和插入" 1:"只更新和插入非NULL值" 2:"只更新和插入非NULL值且非空字符串" + field-strategy: 1 enable-sql-runner: true configuration: # 配置结果集属性为空时 是否映射返回结果 @@ -28,7 +30,7 @@ session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken file: - uploadPath: D:\tmp\ #图片下载本地地址 + uploadPath: D:\tmp\ # config: # export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ # config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx b/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx new file mode 100644 index 0000000..3f0dbbe --- /dev/null +++ b/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/DeviceTemp.xlsx b/casic-web/src/main/resources/config/export/DeviceTemp.xlsx index 5c8f135..f701bdc 100644 --- a/casic-web/src/main/resources/config/export/DeviceTemp.xlsx +++ b/casic-web/src/main/resources/config/export/DeviceTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/FireEquipTemp.xlsx b/casic-web/src/main/resources/config/export/FireEquipTemp.xlsx new file mode 100644 index 0000000..8a89b14 --- /dev/null +++ b/casic-web/src/main/resources/config/export/FireEquipTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/VisitorApplyTemp.xlsx b/casic-web/src/main/resources/config/export/VisitorApplyTemp.xlsx new file mode 100644 index 0000000..a80210d --- /dev/null +++ b/casic-web/src/main/resources/config/export/VisitorApplyTemp.xlsx Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java index 6b35150..7b8105e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -41,15 +41,19 @@ private String visitReason; @ExcelProperty("访问楼栋") private String visitPosition; + @TableField(exist = false) + private String visitPositionName; @ExcelProperty("备注") private String remarks; @ExcelProperty("状态") private String status; - @ExcelProperty("被访人工号") + @TableField(exist = false) + private String statusName; + @ExcelProperty("申请者工号") private String staffCode; - @ExcelProperty("被访人姓名") + @ExcelProperty("申请者姓名") private String staffName; - @ExcelProperty("被访人联系方式") + @ExcelProperty("申请者联系方式") private String staffPhone; @ExcelProperty("访问开始时间") private String inTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java index 0647185..22f2075 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -5,7 +5,6 @@ import com.casic.missiles.modular.dto.*; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import java.util.List; @@ -16,7 +15,9 @@ */ public interface DeviceInfoService extends IService { - List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest); + + List deviceInfoList(DeviceInfoRequest deviceInfoRequest); Object addDeviceInfo(DeviceInfo deviceInfo); @@ -36,7 +37,7 @@ DeviceRepairLog selectById(Long id); - List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); Object addGateGroupDTO(GateGroupDTO gateGroupDTO); @@ -44,7 +45,11 @@ Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); - List selectDeviceCodesByIds(List ids); + List selectDeviceCodesById(Long ids); List selectIndexCodesByCodes(List deviceCodes); + + List selectRepairLogByCode(String devCode); + + int updateBatchGateGroupStatus(List deviceCodes, String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java index b7ebe90..2ba97b0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.dto.VisitorRequest; import com.casic.missiles.modular.model.VisitInfo; @@ -11,7 +12,7 @@ * @Author: wangpeng * @Date: 2022/7/28 19:40 */ -public interface VisitService { +public interface VisitService extends IService { List visitInfoListPage(Page page, VisitorRequest visitorRequest); VisitInfo visitInfoDetail(String id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java index 6fa536c..7a25099 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.dao.CaseInfoMapper; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; import com.casic.missiles.modular.dto.CaseInfoRequest; import com.casic.missiles.modular.enums.SecurityEventDict; import com.casic.missiles.modular.model.CaseInfo; @@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; import org.springframework.validation.Validator; @@ -35,6 +38,12 @@ @Autowired private CaseInfoMapper caseInfoMapper; + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Autowired + private HazardLevelMapper hazardLevelMapper; + @Resource private Validator validator; @@ -68,6 +77,8 @@ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); List list = new ArrayList<>(); if (!CollectionUtil.isEmpty(results)) { + List categoryList = categoryLevelMapper.selectCategoryNameList(); + List hazardList = hazardLevelMapper.selectHazardName(); final Integer[] index = {0}; results.forEach(busConcentrator -> { validator.validate(busConcentrator, beanPropertyBindingResult); @@ -81,14 +92,21 @@ ); return; } -// if (new Long(0L).equals(busConcentrator.getDeptid())) { -// busConcentrator.setDeptid(commonPermissionService.getAuthService().getLoginUser().getDeptId()); -// } else { -// if (StrUtil.isEmpty(commonPermissionService.getDeptService().getDeptName(busConcentrator.getDeptid()))) { -// list.add(" 第" + index[0] + "行,权属单位不存在"); -// return; -// } -// } + //事件级别、事件类别校验及编码生成 + if(!categoryList.contains(busConcentrator.getTypeName())){ + list.add(" 第" + index[0] + "行,".concat("事件类别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getTypeName().getBytes()); + busConcentrator.setCategoryLevelCode(s.substring(0,15)); + } + if(!hazardList.contains(busConcentrator.getLevelName())){ + list.add(" 第" + index[0] + "行,".concat("事件级别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getLevelName().getBytes()); + busConcentrator.setHazardLevelCode(s.substring(0,15)); + } if (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { try { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java index be006ea..0755c85 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -49,6 +50,8 @@ @Override public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + String s = DigestUtils.md5DigestAsHex(caseCategoryLevel.getName().getBytes()); + caseCategoryLevel.setCode(s.substring(0,15)); CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); if(!Objects.isNull(categoryLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java index 9d9c731..2f2b9e3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -65,12 +66,12 @@ private GroupDeviceService groupDeviceService; @Override - public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + public List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest) { try { List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); pageList.forEach(device ->{ - device.setDevType(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); - device.setStatus(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); + device.setDevTypeName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); + device.setStatusName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); device.setPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, device.getPosition())); device.setAreaName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_AREA, device.getArea())); device.setIsKeyAreaName(dictService.getDictNameByCode(SecurityEventDict.IS_KEY_AREA, device.getIsKeyArea())); @@ -83,6 +84,12 @@ } @Override + public List deviceInfoList(DeviceInfoRequest deviceInfoRequest) { + List list = deviceInfoMapper.getDeviceInfoList(deviceInfoRequest); + return list; + } + + @Override public Object addDeviceInfo(DeviceInfo deviceInfo) { DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); if(!Objects.isNull(device)){ @@ -186,6 +193,7 @@ DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); deviceRepairLogDTO.setDeviceCode(k); deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setIp(v.get(0).getIp()); deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); deviceRepairLogDTO.setFailNumber(v.size()); deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); @@ -211,7 +219,7 @@ } @Override - public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { try { List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); pageList.forEach(gateGroup ->{ @@ -293,9 +301,11 @@ } @Override - public List selectDeviceCodesByIds(List ids) { + public List selectDeviceCodesById(Long id) { //关联表查询 - List groupDevices = groupDeviceMapper.selectBatchIds(ids); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("gate_group_id", id); + List groupDevices = groupDeviceMapper.selectList(wrapper); List collect = groupDevices.stream().distinct().collect(Collectors.toList()); List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); return deviceCodes; @@ -307,5 +317,18 @@ return indexCodes; } + @Override + public List selectRepairLogByCode(String devCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("device_code", devCode); + List deviceRepairLogs = deviceRepairLogMapper.selectList(queryWrapper); + return deviceRepairLogs; + } + + @Override + public int updateBatchGateGroupStatus(List deviceCodes, String status) { + return deviceInfoMapper.updateStatusBatchByCodes(deviceCodes, status); + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java index 40e9dae..529eb74 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -39,6 +40,8 @@ @Override public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + String s = DigestUtils.md5DigestAsHex(caseHazardLevel.getName().getBytes()); + caseHazardLevel.setCode(s.substring(0,15)); CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); if(!Objects.isNull(hazardLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java index 1f3f89b..497003a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -58,7 +58,7 @@ List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); pageList.forEach(visitorApply ->{ visitorApply.setVisitReason(dictService.getDictNameByCode(SecurityEventDict.VISIT_REASON, visitorApply.getVisitReason())); - visitorApply.setVisitPosition(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); + visitorApply.setVisitPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); }); return pageList; } catch (DataAccessException ex) { diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index d95fb6f..99adbea 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -28,6 +28,12 @@ #图片下载本地地址 file: uploadPath: D:\tmp\ + commponentType: disk + +cockpit: + config: + #模板文件本地路径 + exportPath: D:\code\casic-security-cockpit\casic-web\src\main\resources\config\export\ logging: level.root: info diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 86971f8..9dc8566 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -13,6 +13,8 @@ ################### mybatis-plus配置 ################### mybatis-plus: global-config: + #字段策略 0:"所有字段都更新和插入" 1:"只更新和插入非NULL值" 2:"只更新和插入非NULL值且非空字符串" + field-strategy: 1 enable-sql-runner: true configuration: # 配置结果集属性为空时 是否映射返回结果 @@ -28,7 +30,7 @@ session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken file: - uploadPath: D:\tmp\ #图片下载本地地址 + uploadPath: D:\tmp\ # config: # export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ # config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx b/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx new file mode 100644 index 0000000..3f0dbbe --- /dev/null +++ b/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/DeviceTemp.xlsx b/casic-web/src/main/resources/config/export/DeviceTemp.xlsx index 5c8f135..f701bdc 100644 --- a/casic-web/src/main/resources/config/export/DeviceTemp.xlsx +++ b/casic-web/src/main/resources/config/export/DeviceTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/FireEquipTemp.xlsx b/casic-web/src/main/resources/config/export/FireEquipTemp.xlsx new file mode 100644 index 0000000..8a89b14 --- /dev/null +++ b/casic-web/src/main/resources/config/export/FireEquipTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/VisitorApplyTemp.xlsx b/casic-web/src/main/resources/config/export/VisitorApplyTemp.xlsx new file mode 100644 index 0000000..a80210d --- /dev/null +++ b/casic-web/src/main/resources/config/export/VisitorApplyTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/securityCockpitTemp.xlsx b/casic-web/src/main/resources/config/export/securityCockpitTemp.xlsx deleted file mode 100644 index bbff532..0000000 --- a/casic-web/src/main/resources/config/export/securityCockpitTemp.xlsx +++ /dev/null Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java index 4a73087..dbe37a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/aspect/FrontLogAspect.java @@ -27,7 +27,9 @@ @Slf4j @Order(Integer.MIN_VALUE) public class FrontLogAspect { - @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))") + @Pointcut("execution(* com.casic.missiles.modular.controller..*.*(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.batchImport(..))" + + "&& !execution(* com.casic.missiles.modular.controller.*.exportTemplate(..))") public void point() { } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java new file mode 100644 index 0000000..ac68966 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/config/CockpitConfig.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Description: 全局配置文件 + * @Author: wangpeng + * @Date: 2022/8/10 13:46 + */ +@Data +@Component +@ConfigurationProperties("cockpit.config") +public class CockpitConfig { + private String exportPath; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java index cc6b060..4a889af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CaseInfoController.java @@ -12,8 +12,6 @@ import com.casic.missiles.modular.service.CaseInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -88,28 +86,42 @@ */ @PostMapping("/export") @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/securityCockpitTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "securityCockpitTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } + public void exportTemplate(HttpServletResponse res) throws IOException { +// File excelFile = new File("D:\\code\\casic-security-cockpit\\casic-web\\src\\main\\resources\\config\\export\\securityCockpitTemp.xlsx"); +// res.setCharacterEncoding("UTF-8"); +// String realFileName = excelFile.getName(); +// res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); +// res.setContentType("application/octet-stream;charset=UTF-8"); +// //加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃” +// res.addHeader("Content-Length", String.valueOf(excelFile.length())); +// try { +// res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); +// } catch (UnsupportedEncodingException e1) { +// e1.printStackTrace(); +// } +// byte[] buff = new byte[1024]; +// BufferedInputStream bis = null; +// OutputStream os = null; +// try { +// os = res.getOutputStream(); +// bis = new BufferedInputStream(new FileInputStream(excelFile)); +// int i = bis.read(buff); +// while (i != -1) { +// os.write(buff, 0, buff.length); +// os.flush(); +// i = bis.read(buff); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// }finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java index a549d1c..4c26a39 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/CategoryLevelController.java @@ -38,10 +38,10 @@ /** * 事件类别配置列表(不分页) */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody CategoryLevelRequest categoryLevelRequest) { - List caseCategoryLevels = categoryLevelService.categoryLevelList(categoryLevelRequest); + public Object list() { + List caseCategoryLevels = categoryLevelService.categoryLevelList(null); return ResponseData.success(caseCategoryLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java index 0e4fbfc..58d0f6e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/DeviceController.java @@ -14,21 +14,15 @@ import com.casic.missiles.modular.enums.OperateTypeEnum; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import com.casic.missiles.modular.service.DeviceInfoService; import com.casic.missiles.modular.util.HikUtil; import com.casic.missiles.modular.util.PageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -52,18 +46,29 @@ @ResponseBody public Object listPage(@RequestBody DeviceInfoRequest deviceInfoRequest) { Page page = PageFactory.defaultPage(); - List deviceInfos = deviceInfoService.deviceInfoListPage(page, deviceInfoRequest); + List deviceInfos = deviceInfoService.deviceInfoList(page, deviceInfoRequest); page.setRecords(deviceInfos); return ResponseData.success(super.packForBT(page)); } /** + * 设备列表(不分页) + */ + @PostMapping("/list") + @ResponseBody + public Object list(@RequestBody DeviceInfoRequest deviceInfoRequest) { + List deviceInfos = deviceInfoService.deviceInfoList(deviceInfoRequest); + return ResponseData.success(deviceInfos); + } + + /** * 设备增删改 */ @PostMapping("/{operation}") @ResponseBody public Object operation(@PathVariable(name = "operation") String operateType, @RequestBody DeviceInfo deviceInfo) { if(OperateTypeEnum.ADD.getOperateType().equals(operateType)){ + deviceInfo.setCreateTime("2022-06-01"); return deviceInfoService.addDeviceInfo(deviceInfo); }else if(OperateTypeEnum.UPDATE.getOperateType().equals(operateType)){ return deviceInfoService.updateDeviceInfo(deviceInfo); @@ -103,35 +108,6 @@ } /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/deviceTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "deviceTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - - /** * 设备维修管理查询(分页),需计算MTTR=总维修时间/故障次数 */ @PostMapping("/repair/listPage") @@ -164,12 +140,22 @@ } /** - * 设备维修详情 + * 单个设备维修记录 + */ + @PostMapping("/repair/singleRecord") + @ResponseBody + public Object singleRecord(@RequestBody DeviceRepairLog deviceRepairLog) { + DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + return ResponseData.success(repairLog); + } + + /** + * 设备维修详情,即设备维修记录列表 */ @PostMapping("/repair/detail") @ResponseBody - public Object repairDetail(@RequestBody DeviceRepairLog deviceRepairLog) { - DeviceRepairLog repairLog = deviceInfoService.selectById(deviceRepairLog.getId()); + public Object repairDetail(@RequestBody DeviceInfo deviceInfo) { + List repairLog = deviceInfoService.selectRepairLogByCode(deviceInfo.getDevCode()); return ResponseData.success(repairLog); } @@ -179,9 +165,10 @@ @PostMapping("/gateGroup/listPage") @ResponseBody public Object gateGroupListPage(@RequestBody GateGroupRequest gateGroupRequest) { - Page page = PageFactory.defaultPage(); + Page page = PageFactory.defaultPage(); List list = deviceInfoService.gateGroupListPage(page, gateGroupRequest); - return ResponseData.success(list); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); } /** @@ -213,7 +200,7 @@ //3: 常闭 //通过分组id获取闸机编号列表 - List deviceCodes = deviceInfoService.selectDeviceCodesByIds(gateGroupDTO.getIds()); + List deviceCodes = deviceInfoService.selectDeviceCodesById(gateGroupDTO.getId()); if(CollectionUtils.isEmpty(deviceCodes)){ log.info("闸机通道状态控制:不存在分组的闸机编号,request:{}", gateGroupDTO); return ResponseData.error("不存在分组下的闸机编号"); @@ -242,6 +229,11 @@ if(!CollectionUtils.isEmpty(failControlList)){ return ResponseData.error("门禁点:" + failControlList + "反控失败"); } + //更新数据库中设备状态 + if(deviceInfoService.updateBatchGateGroupStatus(deviceCodes, gateGroupDTO.getStatus()) <= 0){ + log.error("更新数据库中设备状态失败"); + return ResponseData.error("门禁点反控失败"); + } return ResponseData.success(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java index 18ef0f5..a406eb6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/FireEquipController.java @@ -13,14 +13,9 @@ import com.casic.missiles.modular.service.FireEquipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -94,33 +89,4 @@ return ResponseData.success(); } - /** - * excel模板导出 - */ - @PostMapping("/export") - @ResponseBody - public void exportTemplate(HttpServletResponse response) throws IOException { - Resource resource = new ClassPathResource("config/export/fireEquipTemp.xlsx"); - File file = resource.getFile(); - // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 - response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", " attachment;filename=" + "fireEquipTemp.xlsx"); - response.setContentLength((int) resource.getFile().length()); - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - byte[] buffer = new byte[1024]; - int readTmp = 0; - while ((readTmp = fis.read(buffer)) != -1) { - response.getOutputStream().write(buffer, 0, readTmp); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - response.getOutputStream().flush(); - response.getOutputStream().close(); - fis.close(); - } - } - } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java index f707962..7da5894 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/HazardLevelController.java @@ -39,10 +39,10 @@ * 事件危险级别配置列表(不分页) * @return */ - @PostMapping("/list") + @GetMapping("/list") @ResponseBody - public Object list(@RequestBody HazardLevelRequest hazardLevelRequest) { - List caseHazardLevels = hazardLevelService.hazardLevelList(hazardLevelRequest); + public Object list() { + List caseHazardLevels = hazardLevelService.hazardLevelList(null); return ResponseData.success(caseHazardLevels); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java new file mode 100644 index 0000000..d2653a9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/TemplateController.java @@ -0,0 +1,65 @@ +package com.casic.missiles.modular.controller; + +import com.casic.missiles.modular.config.CockpitConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @Description: 模板管理 + * @Author: wangpeng + * @Date: 2022/8/10 13:15 + */ +@Slf4j +@RestController +public class TemplateController { + @Autowired + private CockpitConfig cockpitConfig; + /** + * 文件模板下载 + */ + @GetMapping("/sys/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) throws IOException { + String path = cockpitConfig.getExportPath(); + log.info("模板下载路径为:{}", path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + log.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java index 14439eb..38f65b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/VisitorController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; @@ -33,6 +34,12 @@ public Object listPage(@RequestBody VisitorRequest visitorRequest) { Page page = PageFactory.defaultPage(); List visitorApplies = visitService.visitInfoListPage(page, visitorRequest); + visitorApplies.forEach(visitInfo -> { + String orderId = visitInfo.getOrderId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", orderId); + visitInfo.setFrequency(visitService.count(queryWrapper)); + }); page.setRecords(visitorApplies); return ResponseData.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java index 2740a1e..fbf8ab6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/controller/hik/HikController.java @@ -179,6 +179,7 @@ if(!caseInfoService.insertCaseInfoBatch(caseInfos)){ log.error("安防事件批量入库异常"); } + // TODO: 2022/8/15 webSocket推送 return; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java index 8b9e67c..68d745f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CaseInfoMapper.java @@ -18,7 +18,7 @@ @Mapper public interface CaseInfoMapper extends BaseMapper { - List getCaseInfoListPage(@Param("page") Page page, CaseInfoRequest caseInfoRequest); + List getCaseInfoListPage(@Param("page") Page page, @Param("caseInfoRequest") CaseInfoRequest caseInfoRequest); int updateStatusById(CaseInfoRequest caseInfoRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java index ca1cd6c..52fc714 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/CategoryLevelMapper.java @@ -23,4 +23,6 @@ CaseCategoryLevel getCaseCategoryLevel(@Param("categoryLevelCode") String categoryLevelCode); + List selectCategoryNameList(); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java index d39c852..66353b1 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/DeviceInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.dto.DeviceInfoDTO; import com.casic.missiles.modular.dto.DeviceInfoRequest; import com.casic.missiles.modular.dto.statistics.GateStatusGroupDTO; import com.casic.missiles.modular.model.DeviceInfo; @@ -20,6 +21,8 @@ List getDeviceInfoListPage(@Param("page") Page page, DeviceInfoRequest deviceInfoRequest); + List getDeviceInfoList(@Param("deviceInfoRequest") DeviceInfoRequest deviceInfoRequest); + DeviceInfo getDeviceInfo(@Param("devCode") String devCode); DeviceInfo getByIndexCode(@Param("srcIndex") String srcIndex); @@ -27,4 +30,6 @@ List selectIndexCodesByCodes(@Param("deviceCodes") List deviceCodes); List selectByType(@Param("devType") String devType); + + int updateStatusBatchByCodes(@Param("deviceCodes") List deviceCodes, @Param("status")String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java index b1facc8..d8c330d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/GateGroupMapper.java @@ -17,7 +17,7 @@ */ @Mapper public interface GateGroupMapper extends BaseMapper { - List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); + List getGateGroupListPage(@Param("page") Page page, GateGroupRequest gateGroupRequest); GateGroup getGateGroupByName(@Param("groupName") String groupName); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java index c86f7b2..8957780 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/HazardLevelMapper.java @@ -23,4 +23,5 @@ CaseHazardLevel getCaseHazardLevel(@Param("hazardLevelCode") String hazardLevelCode); + List selectHazardName(); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml index 0faa3e3..c1993e0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/BlackInfoMapper.xml @@ -6,7 +6,9 @@ FROM bus_blacklist_info WHERE 1=1 - and (balck_name like concat('%',#{blackInfoRequest.keywords},'%') or id_card_no like concat('%',#{blackInfoRequest.keywords},'%')) + and (black_name like concat('%',#{blackInfoRequest.keywords},'%') + or id_card_no like concat('%',#{blackInfoRequest.keywords},'%') + or index_code like concat('%',#{blackInfoRequest.keywords},'%')) and black_reason = #{blackInfoRequest.blackReason} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml index dff758a..6f505fc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CaseInfoMapper.xml @@ -7,10 +7,10 @@ FROM bus_case_info WHERE 1=1 - and hazard_level_id = #{caseInfoRequest.level} + and hazard_level_code = #{caseInfoRequest.level} - and category_level_id = #{caseInfoRequest.type} + and category_level_code = #{caseInfoRequest.type} and status = #{caseInfoRequest.status} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml index 3adb601..4670b1f 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/CategoryLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{categoryLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml index 9a177c2..9b66fd8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/DeviceInfoMapper.xml @@ -12,6 +12,37 @@ and dev_name = #{deviceInfoRequest.devName} + + and dev_type = #{deviceInfoRequest.devType} + + + and ip = #{deviceInfoRequest.IP} + + + and status = #{deviceInfoRequest.status} + + + and is_key_area = #{deviceInfoRequest.isKeyArea} + + + and bus_device_info.position = #{deviceInfoRequest.position} + + ORDER by create_time DESC + + + + + + UPDATE bus_device_info + SET status = #{status} + WHERE dev_code + IN + + #{item} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml index 403e72f..f16f2b9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/dao/mapping/HazardLevelMapper.xml @@ -37,4 +37,9 @@ and code = #{hazardLevelCode} + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java new file mode 100644 index 0000000..7b58019 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.dto; + +import lombok.Data; + +/** + * @Description: 设备列表不分页DTO + * @Author: wangpeng + * @Date: 2022/8/10 10:53 + */ +@Data +public class DeviceInfoDTO { + private String devName; + private String devCode; + private String ip; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java index bc9bc1e..4fdbfde 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceInfoRequest.java @@ -12,6 +12,7 @@ private String id; private String devCode; private String devName; + private String devType; private String ip; private String status; private String isKeyArea; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java index 06517b3..284f848 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/DeviceRepairLogDTO.java @@ -11,6 +11,7 @@ public class DeviceRepairLogDTO { private String deviceCode; private String deviceName; + private String ip; private long totalRepairTime; private int failNumber; private long mttr; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java index 643128e..f9b6863 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/dto/GateGroupDTO.java @@ -2,8 +2,6 @@ import lombok.Data; -import java.util.List; - /** * @Description: 闸机分组列表响应实体 * @Author: wangpeng @@ -18,5 +16,4 @@ private String remarks; private String status; private String statusName; - private List ids; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java index cb6b169..c9b939d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/CaseInfo.java @@ -28,13 +28,13 @@ public class CaseInfo extends Model { @TableId private Long id; - @ExcelProperty("危险级别编码") +// @ExcelProperty("危险级别编码") private String hazardLevelCode; @ExcelProperty("危险级别") private String levelName; @ExcelProperty("事件描述") private String description; - @ExcelProperty("事件状态") +// @ExcelProperty("事件状态") private String status; @TableField(exist = false) private String statusName; @@ -47,12 +47,12 @@ @ExcelProperty("设备名称") private String devName; //4个楼,字典值 - @ExcelProperty("所属楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java index 66300db..965add3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceInfo.java @@ -34,34 +34,38 @@ private String devName; @ExcelProperty("设备编号") private String devCode; + @ExcelProperty("设备IP") + private String ip; @ExcelProperty("海康设备编号") private String indexCode; @ExcelProperty("设备类型") private String devType; + @TableField(exist = false) + private String devTypeName; //4个楼,字典值 - @ExcelProperty("所在楼栋") + @ExcelProperty("所在区域") private String position; @TableField(exist = false) private String positionName; //楼层划分,字典值 - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; @ExcelProperty("详细位置") private String detailLocation; + @ExcelProperty("是否重点区域") + private String isKeyArea; @ExcelProperty("设备状态") private String status; + @TableField(exist = false) + private String statusName; @ExcelProperty("安装时间") private String installTime; @ExcelProperty("备注") private String remarks; - @ExcelProperty("设备IP") - private String ip; - @ExcelProperty("设备SN") +// @ExcelProperty("设备SN") private String sn; - @ExcelProperty("是否重点区域") - private String isKeyArea; @TableField(exist = false) private String isKeyAreaName; private String createTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java index 632ed07..0b4a3af 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/DeviceRepairLog.java @@ -18,6 +18,7 @@ private Long id; private String deviceCode; private String deviceName; + private String ip; private String repairCode; private String repairStartTime; private String repairEndTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java index 58257ed..0734e37 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/FireEquipInfo.java @@ -39,7 +39,7 @@ private String position; @TableField(exist = false) private String positionName; - @ExcelProperty("区域") + @ExcelProperty("所在楼层") private String area; @TableField(exist = false) private String areaName; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java index f9cbe78..46dc570 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/StaffInfo.java @@ -47,9 +47,9 @@ private String phone; @ExcelProperty("照片") private String picture; - @ExcelProperty("工作开始日期") + @ExcelProperty("工作起始日期") private String onDate; - @ExcelProperty("工作结束日期") + @ExcelProperty("工作终止日期") private String offDate; private String createTime; private String updateTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java index b109813..ef39665 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -28,4 +29,7 @@ private String outTime; private String createTime; private String updateTime; + //该访客累计访问次数 + @TableField(exist = false) + private Integer frequency; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java index 6b35150..7b8105e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/model/VisitorApply.java @@ -41,15 +41,19 @@ private String visitReason; @ExcelProperty("访问楼栋") private String visitPosition; + @TableField(exist = false) + private String visitPositionName; @ExcelProperty("备注") private String remarks; @ExcelProperty("状态") private String status; - @ExcelProperty("被访人工号") + @TableField(exist = false) + private String statusName; + @ExcelProperty("申请者工号") private String staffCode; - @ExcelProperty("被访人姓名") + @ExcelProperty("申请者姓名") private String staffName; - @ExcelProperty("被访人联系方式") + @ExcelProperty("申请者联系方式") private String staffPhone; @ExcelProperty("访问开始时间") private String inTime; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java index 0647185..22f2075 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/DeviceInfoService.java @@ -5,7 +5,6 @@ import com.casic.missiles.modular.dto.*; import com.casic.missiles.modular.model.DeviceInfo; import com.casic.missiles.modular.model.DeviceRepairLog; -import com.casic.missiles.modular.model.GateGroup; import java.util.List; @@ -16,7 +15,9 @@ */ public interface DeviceInfoService extends IService { - List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest); + List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest); + + List deviceInfoList(DeviceInfoRequest deviceInfoRequest); Object addDeviceInfo(DeviceInfo deviceInfo); @@ -36,7 +37,7 @@ DeviceRepairLog selectById(Long id); - List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); + List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest); Object addGateGroupDTO(GateGroupDTO gateGroupDTO); @@ -44,7 +45,11 @@ Object deleteGateGroupDTO(GateGroupDTO gateGroupDTO); - List selectDeviceCodesByIds(List ids); + List selectDeviceCodesById(Long ids); List selectIndexCodesByCodes(List deviceCodes); + + List selectRepairLogByCode(String devCode); + + int updateBatchGateGroupStatus(List deviceCodes, String status); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java index b7ebe90..2ba97b0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/VisitService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.dto.VisitorRequest; import com.casic.missiles.modular.model.VisitInfo; @@ -11,7 +12,7 @@ * @Author: wangpeng * @Date: 2022/7/28 19:40 */ -public interface VisitService { +public interface VisitService extends IService { List visitInfoListPage(Page page, VisitorRequest visitorRequest); VisitInfo visitInfoDetail(String id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java index 6fa536c..7a25099 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CaseInfoServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.dao.CaseInfoMapper; +import com.casic.missiles.modular.dao.CategoryLevelMapper; +import com.casic.missiles.modular.dao.HazardLevelMapper; import com.casic.missiles.modular.dto.CaseInfoRequest; import com.casic.missiles.modular.enums.SecurityEventDict; import com.casic.missiles.modular.model.CaseInfo; @@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; import org.springframework.validation.Validator; @@ -35,6 +38,12 @@ @Autowired private CaseInfoMapper caseInfoMapper; + @Autowired + private CategoryLevelMapper categoryLevelMapper; + + @Autowired + private HazardLevelMapper hazardLevelMapper; + @Resource private Validator validator; @@ -68,6 +77,8 @@ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(CaseInfo.class, "安防事件导入校验"); List list = new ArrayList<>(); if (!CollectionUtil.isEmpty(results)) { + List categoryList = categoryLevelMapper.selectCategoryNameList(); + List hazardList = hazardLevelMapper.selectHazardName(); final Integer[] index = {0}; results.forEach(busConcentrator -> { validator.validate(busConcentrator, beanPropertyBindingResult); @@ -81,14 +92,21 @@ ); return; } -// if (new Long(0L).equals(busConcentrator.getDeptid())) { -// busConcentrator.setDeptid(commonPermissionService.getAuthService().getLoginUser().getDeptId()); -// } else { -// if (StrUtil.isEmpty(commonPermissionService.getDeptService().getDeptName(busConcentrator.getDeptid()))) { -// list.add(" 第" + index[0] + "行,权属单位不存在"); -// return; -// } -// } + //事件级别、事件类别校验及编码生成 + if(!categoryList.contains(busConcentrator.getTypeName())){ + list.add(" 第" + index[0] + "行,".concat("事件类别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getTypeName().getBytes()); + busConcentrator.setCategoryLevelCode(s.substring(0,15)); + } + if(!hazardList.contains(busConcentrator.getLevelName())){ + list.add(" 第" + index[0] + "行,".concat("事件级别不存在")); + return; + }else{ + String s = DigestUtils.md5DigestAsHex(busConcentrator.getLevelName().getBytes()); + busConcentrator.setHazardLevelCode(s.substring(0,15)); + } if (StrUtil.isNotEmpty(busConcentrator.getHappenTime())) { try { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java index be006ea..0755c85 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/CategoryLevelServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -49,6 +50,8 @@ @Override public Object addCategoryLevel(CaseCategoryLevel caseCategoryLevel) { + String s = DigestUtils.md5DigestAsHex(caseCategoryLevel.getName().getBytes()); + caseCategoryLevel.setCode(s.substring(0,15)); CaseCategoryLevel categoryLevel = categoryLevelMapper.getCaseCategoryLevel(caseCategoryLevel.getCode()); if(!Objects.isNull(categoryLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java index 9d9c731..2f2b9e3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/DeviceInfoServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -65,12 +66,12 @@ private GroupDeviceService groupDeviceService; @Override - public List deviceInfoListPage(Page page, DeviceInfoRequest deviceInfoRequest) { + public List deviceInfoList(Page page, DeviceInfoRequest deviceInfoRequest) { try { List pageList = deviceInfoMapper.getDeviceInfoListPage(page, deviceInfoRequest); pageList.forEach(device ->{ - device.setDevType(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); - device.setStatus(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); + device.setDevTypeName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_TYPE, device.getDevType())); + device.setStatusName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_STATUS, device.getStatus())); device.setPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, device.getPosition())); device.setAreaName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_AREA, device.getArea())); device.setIsKeyAreaName(dictService.getDictNameByCode(SecurityEventDict.IS_KEY_AREA, device.getIsKeyArea())); @@ -83,6 +84,12 @@ } @Override + public List deviceInfoList(DeviceInfoRequest deviceInfoRequest) { + List list = deviceInfoMapper.getDeviceInfoList(deviceInfoRequest); + return list; + } + + @Override public Object addDeviceInfo(DeviceInfo deviceInfo) { DeviceInfo device = deviceInfoMapper.getDeviceInfo(deviceInfo.getDevCode()); if(!Objects.isNull(device)){ @@ -186,6 +193,7 @@ DeviceRepairLogDTO deviceRepairLogDTO = new DeviceRepairLogDTO(); deviceRepairLogDTO.setDeviceCode(k); deviceRepairLogDTO.setDeviceName(v.get(0).getDeviceName()); + deviceRepairLogDTO.setIp(v.get(0).getIp()); deviceRepairLogDTO.setTotalRepairTime(TimeUnit.MILLISECONDS.toHours(repairTime)); deviceRepairLogDTO.setFailNumber(v.size()); deviceRepairLogDTO.setMttr(deviceRepairLogDTO.getTotalRepairTime() / deviceRepairLogDTO.getFailNumber()); @@ -211,7 +219,7 @@ } @Override - public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { + public List gateGroupListPage(Page page, GateGroupRequest gateGroupRequest) { try { List pageList = gateGroupMapper.getGateGroupListPage(page, gateGroupRequest); pageList.forEach(gateGroup ->{ @@ -293,9 +301,11 @@ } @Override - public List selectDeviceCodesByIds(List ids) { + public List selectDeviceCodesById(Long id) { //关联表查询 - List groupDevices = groupDeviceMapper.selectBatchIds(ids); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("gate_group_id", id); + List groupDevices = groupDeviceMapper.selectList(wrapper); List collect = groupDevices.stream().distinct().collect(Collectors.toList()); List deviceCodes = collect.stream().map(GroupDevice::getDeviceCode).collect(Collectors.toList()); return deviceCodes; @@ -307,5 +317,18 @@ return indexCodes; } + @Override + public List selectRepairLogByCode(String devCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("device_code", devCode); + List deviceRepairLogs = deviceRepairLogMapper.selectList(queryWrapper); + return deviceRepairLogs; + } + + @Override + public int updateBatchGateGroupStatus(List deviceCodes, String status) { + return deviceInfoMapper.updateStatusBatchByCodes(deviceCodes, status); + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java index 40e9dae..529eb74 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/HazardLevelServiceImpl.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import java.util.List; import java.util.Objects; @@ -39,6 +40,8 @@ @Override public Object addHazardLevel(CaseHazardLevel caseHazardLevel) { + String s = DigestUtils.md5DigestAsHex(caseHazardLevel.getName().getBytes()); + caseHazardLevel.setCode(s.substring(0,15)); CaseHazardLevel hazardLevel = hazardLevelMapper.getCaseHazardLevel(caseHazardLevel.getCode()); if(!Objects.isNull(hazardLevel)){ return ResponseData.error("数据已存在"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java index 1f3f89b..497003a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/service/impl/VisitorApplyServiceImpl.java @@ -58,7 +58,7 @@ List pageList = visitorApplyMapper.getVisitorApplyListPage(page, visitorApplyRequest); pageList.forEach(visitorApply ->{ visitorApply.setVisitReason(dictService.getDictNameByCode(SecurityEventDict.VISIT_REASON, visitorApply.getVisitReason())); - visitorApply.setVisitPosition(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); + visitorApply.setVisitPositionName(dictService.getDictNameByCode(SecurityEventDict.DEVICE_POSITION, visitorApply.getVisitPosition())); }); return pageList; } catch (DataAccessException ex) { diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index d95fb6f..99adbea 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -28,6 +28,12 @@ #图片下载本地地址 file: uploadPath: D:\tmp\ + commponentType: disk + +cockpit: + config: + #模板文件本地路径 + exportPath: D:\code\casic-security-cockpit\casic-web\src\main\resources\config\export\ logging: level.root: info diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 86971f8..9dc8566 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -13,6 +13,8 @@ ################### mybatis-plus配置 ################### mybatis-plus: global-config: + #字段策略 0:"所有字段都更新和插入" 1:"只更新和插入非NULL值" 2:"只更新和插入非NULL值且非空字符串" + field-strategy: 1 enable-sql-runner: true configuration: # 配置结果集属性为空时 是否映射返回结果 @@ -28,7 +30,7 @@ session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken file: - uploadPath: D:\tmp\ #图片下载本地地址 + uploadPath: D:\tmp\ # config: # export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ # config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx b/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx new file mode 100644 index 0000000..3f0dbbe --- /dev/null +++ b/casic-web/src/main/resources/config/export/CaseInfoTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/DeviceTemp.xlsx b/casic-web/src/main/resources/config/export/DeviceTemp.xlsx index 5c8f135..f701bdc 100644 --- a/casic-web/src/main/resources/config/export/DeviceTemp.xlsx +++ b/casic-web/src/main/resources/config/export/DeviceTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/FireEquipTemp.xlsx b/casic-web/src/main/resources/config/export/FireEquipTemp.xlsx new file mode 100644 index 0000000..8a89b14 --- /dev/null +++ b/casic-web/src/main/resources/config/export/FireEquipTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/VisitorApplyTemp.xlsx b/casic-web/src/main/resources/config/export/VisitorApplyTemp.xlsx new file mode 100644 index 0000000..a80210d --- /dev/null +++ b/casic-web/src/main/resources/config/export/VisitorApplyTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/securityCockpitTemp.xlsx b/casic-web/src/main/resources/config/export/securityCockpitTemp.xlsx deleted file mode 100644 index bbff532..0000000 --- a/casic-web/src/main/resources/config/export/securityCockpitTemp.xlsx +++ /dev/null Binary files differ diff --git a/casic-web/src/main/resources/config/export/staffTemp.xlsx b/casic-web/src/main/resources/config/export/staffTemp.xlsx index c1b521a..12fe6cb 100644 --- a/casic-web/src/main/resources/config/export/staffTemp.xlsx +++ b/casic-web/src/main/resources/config/export/staffTemp.xlsx Binary files differ